对于引导程序 3.xx
我找到了一个解决方案,它适用于100% CSS 而没有 JavaScript。
诀窍是在 html 内容的滚动条上显示模态滚动条。
CSS:
html {
overflow: hidden;
height: 100%;
}
body {
overflow: auto;
height: 100%;
}
/* unset bs3 setting */
.modal-open {
overflow: auto;
}
这是一个在线示例:http: //jsbin.com/oHiPIJi/43/
我在 Windows 7 上对其进行了测试:
- 火狐 27.0
- 铬 32.0.1700.107 m
- IE 11 浏览器模式 8、9、10、Edge(桌面)
- 浏览器模式下的 IE 11 8、9、10、Edge(Windows 手机)
我在 IE 中发现的一个新小问题:
IE 具有使用鼠标滚轮滚动的背景(=body),如果在前景中没有更多可滚动的内容。
保重position:fixed
!
由于此解决方法的性质,您需要特别注意固定元素。例如,“navbar fixed”的填充需要设置为html
而不是body
(如何在 bootstrap doc中描述)。
/* only for fixed navbar:
* extra padding setting not on "body" (like it is described in docs),
* but on "html" element
* the value used depends on the height of your navbar
*/
html {
padding-top: 50px;
padding-bottom: 50px;
}
带包装的替代品
如果您不喜欢设置overflow:hidden
(html
有些人不喜欢这个,但它有效,有效且 100% 符合标准),您可以将 的内容包装body
在一个额外的 div 中。您可以通过使用这种方法像以前一样使用它。
body, html {
height: 100%;
}
.bodywrapper {
overflow: auto;
height: 100%;
}
/* unset bs3 setting */
.modal-open {
overflow: auto;
}
/* extra stetting for fixed navbar, see bs3 doc
*/
body {
padding-top: 50px;
padding-bottom: 50px;
}
这是一个例子:http: //jsbin.com/oHiPIJi/47/
更新:
Bootstrap 中的问题:
更新 2:仅供参考
在 Bootstrap 3.2.0 中,他们添加了一个解决方法modal.js
,尝试为每次调用 和 处理 Javascriptmodal.prototype.show()
的Modal.prototype.hide()
问题Modal.prototype.resize()
。他们为此添加了 7 个(!)新方法。现在大约 20% 的代码modal.js
试图处理这个问题。