Twitter Bootstrap v2.0.4(bootstrap-modal.js v2.0.4)也有同样的问题。有两个问题需要解决才能达到解决方案。
问题
- CSS:模态类 (.modal) 设置为 { top: 50%; }。这使得模态显示在屏幕外。
- JS:如果您向下滚动页面,模态背景可能无法正确填满屏幕。模式必须在页面顶部打开。
解决方案
CSS
@media only screen and (max-width: 479px) {
.modal {
position: absolute;
top: 16%; // ADJUSTMENT MADE HERE
left: 50%;
z-index: 1050;
width: 300px;
margin: -240px 0 0 -150px;
overflow: auto;
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;
}
}
JS
在 bootstrap.js 中调整模态显示:function()
show: function () {
var that = this
, e = $.Event('show')
that.oldWindowPosition = $(window).scrollTop(); //
$('body, html').scrollTop(0); // ADD THIS LINE
this.$element.trigger(e)
if (this.isShown || e.isDefaultPrevented()) return
$('body').addClass('modal-open')
this.isShown = true
escape.call(this)
backdrop.call(this, function () {
var transition = $.support.transition && that.$element.hasClass('fade')
if (!that.$element.parent().length) {
that.$element.appendTo(document.body) //don't move modals dom position
}
that.$element
.show()
if (transition) {
that.$element[0].offsetWidth // force reflow
}
that.$element.addClass('in')
transition ?
that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
that.$element.trigger('shown')
})
}
同样,这是我对 Twitter Bootstrap 2.0.4 的修复