0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-01-18 10:52:19 +01:00

rework the transitions for the modal a bit

This commit is contained in:
Jacob Thornton 2011-09-10 18:13:37 -07:00
parent 57a8672b77
commit 9c76070cbd
4 changed files with 48 additions and 25 deletions

21
bootstrap-1.3.0.css vendored
View File

@ -6,7 +6,7 @@
* http://www.apache.org/licenses/LICENSE-2.0 * http://www.apache.org/licenses/LICENSE-2.0
* *
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world @twitter by @mdo and @fat.
* Date: Sat Sep 10 15:29:50 PDT 2011 * Date: Sat Sep 10 18:12:41 PDT 2011
*/ */
/* Reset.less /* Reset.less
* Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc). * Props to Eric Meyer (meyerweb.com) for his CSS reset file. We're using an adapted version here that cuts out some of the reset HTML elements we will never need here (i.e., dfn, samp, etc).
@ -1977,10 +1977,10 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
opacity: 0; opacity: 0;
} }
.modal-backdrop, .modal-backdrop.fade.in { .modal-backdrop, .modal-backdrop.fade.in {
filter: alpha(opacity=50); filter: alpha(opacity=70);
-khtml-opacity: 0.5; -khtml-opacity: 0.7;
-moz-opacity: 0.5; -moz-opacity: 0.7;
opacity: 0.5; opacity: 0.7;
} }
.modal { .modal {
position: fixed; position: fixed;
@ -2008,6 +2008,17 @@ button.btn::-moz-focus-inner, input[type=submit].btn::-moz-focus-inner {
.modal .close { .modal .close {
margin-top: 7px; margin-top: 7px;
} }
.modal.fade {
-webkit-transition: opacity .25s linear, top .25s ease-out;
-moz-transition: opacity .25s linear, top .25s ease-out;
-ms-transition: opacity .25s linear, top .25s ease-out;
-o-transition: opacity .25s linear, top .25s ease-out;
transition: opacity .25s linear, top .25s ease-out;
top: -50%;
}
.modal.fade.in {
top: 50%;
}
.modal-header { .modal-header {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
padding: 5px 15px; padding: 5px 15px;

View File

@ -274,8 +274,10 @@ button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;
.pagination .next a{border:0;} .pagination .next a{border:0;}
.well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);} .well{background-color:#f5f5f5;margin-bottom:20px;padding:19px;min-height:20px;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}
.modal-backdrop{background-color:#000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;}.modal-backdrop.fade{opacity:0;} .modal-backdrop{background-color:#000;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;}.modal-backdrop.fade{opacity:0;}
.modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=50);-khtml-opacity:0.5;-moz-opacity:0.5;opacity:0.5;} .modal-backdrop,.modal-backdrop.fade.in{filter:alpha(opacity=70);-khtml-opacity:0.7;-moz-opacity:0.7;opacity:0.7;}
.modal{position:fixed;top:50%;left:50%;z-index:2000;width:560px;margin:-250px 0 0 -250px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;} .modal{position:fixed;top:50%;left:50%;z-index:2000;width:560px;margin:-250px 0 0 -250px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal .close{margin-top:7px;}
.modal.fade{-webkit-transition:opacity .25s linear, top .25s ease-out;-moz-transition:opacity .25s linear, top .25s ease-out;-ms-transition:opacity .25s linear, top .25s ease-out;-o-transition:opacity .25s linear, top .25s ease-out;transition:opacity .25s linear, top .25s ease-out;top:-50%;}
.modal.fade.in{top:50%;}
.modal-header{border-bottom:1px solid #eee;padding:5px 15px;} .modal-header{border-bottom:1px solid #eee;padding:5px 15px;}
.modal-body{padding:15px;} .modal-body{padding:15px;}
.modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;text-align:right;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;*display:inline;} .modal-footer{background-color:#f5f5f5;padding:14px 15px 15px;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;zoom:1;margin-bottom:0;text-align:right;}.modal-footer:before,.modal-footer:after{display:table;content:"";zoom:1;*display:inline;}

35
js/bootstrap-modal.js vendored
View File

@ -59,16 +59,17 @@
this.isShown = true this.isShown = true
_.escape.call(this) _.escape.call(this)
_.backdrop.call(this) _.backdrop.call(this, function () {
this.$element that.$element
.appendTo(document.body) .appendTo(document.body)
.show() .show()
setTimeout(function () { setTimeout(function () {
that.$element.addClass('in').trigger('modal:shown') that.$element.addClass('in').trigger('modal:shown')
that.$backdrop && that.$backdrop.addClass('in') }, 1)
}, 1)
})
return this return this
} }
@ -81,19 +82,19 @@
this.isShown = false this.isShown = false
_.escape.call(this) _.escape.call(this)
_.backdrop.call(this)
this.$element.removeClass('in') this.$element.removeClass('in')
function removeElement () { function removeElement () {
_.backdrop.call(that)
that.$element that.$element
.unbind(transitionEnd)
.detach() .detach()
.trigger('modal:hidden') .trigger('modal:hidden')
} }
$.support.transition && this.$element.hasClass('fade') ? $.support.transition && this.$element.hasClass('fade') ?
this.$element.bind(transitionEnd, removeElement) : this.$element.one(transitionEnd, removeElement) :
removeElement() removeElement()
return this return this
@ -107,13 +108,21 @@
var _ = { var _ = {
backdrop: function () { backdrop: function ( callback ) {
var that = this var that = this
, animate = this.$element.hasClass('fade') ? 'fade' : '' , animate = this.$element.hasClass('fade') ? 'fade' : ''
if ( this.isShown && this.settings.backdrop ) { if ( this.isShown && this.settings.backdrop ) {
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
.click($.proxy(this.hide, this)) .click($.proxy(this.hide, this))
.appendTo(document.body) .appendTo(document.body)
setTimeout(function () {
that.$backdrop && that.$backdrop.addClass('in')
$.support.transition && that.$backdrop.hasClass('fade')?
that.$backdrop.one(transitionEnd, callback) :
callback()
})
} else if ( !this.isShown && this.$backdrop ) { } else if ( !this.isShown && this.$backdrop ) {
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
@ -123,7 +132,7 @@
} }
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.bind(transitionEnd, removeElement) : this.$backdrop.one(transitionEnd, removeElement) :
removeElement() removeElement()
} }
} }

View File

@ -725,9 +725,7 @@ input[type=submit].btn {
.modal-backdrop { .modal-backdrop {
background-color:#000; background-color:#000;
&.fade { &.fade { opacity: 0; }
opacity: 0;
}
position: fixed; position: fixed;
top: 0; top: 0;
left: 0; left: 0;
@ -737,7 +735,7 @@ input[type=submit].btn {
} }
.modal-backdrop, .modal-backdrop.fade.in { .modal-backdrop, .modal-backdrop.fade.in {
.opacity(50); .opacity(70);
} }
.modal { .modal {
@ -754,9 +752,12 @@ input[type=submit].btn {
.border-radius(6px); .border-radius(6px);
.box-shadow(0 3px 7px rgba(0,0,0,0.3)); .box-shadow(0 3px 7px rgba(0,0,0,0.3));
.background-clip(padding-box); .background-clip(padding-box);
.close { .close { margin-top: 7px; }
margin-top: 7px; &.fade {
.transition(e('opacity .25s linear, top .25s ease-out'));
top:-50%;
} }
&.fade.in { top: 50%;}
} }
.modal-header { .modal-header {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;