【发布时间】:2014-01-04 16:06:32
【问题描述】:
这个问题与这两个有关:
1.css - applying padding to box with scroll, bottom-padding doesn't work
2.Bottom padding not working on overflow element in non-chrome browsers
但我没有找到任何关于它发生的原因,这意味着为什么在 Chrome(31) 和 Opera(18) 中会出现填充,而在 Firefox(26) 和 IE(9-10) 中却没有t.
这是我的测试用例:
http://jsfiddle.net/eW39h/4/
相关问题 #1 中的一个更简单的示例:
http://jsfiddle.net/rwgZu/
<div id="container">
<div id="innerBox"></div>
</div>
#container {
padding: 3em;
overflow-x: hidden;
overflow-y: auto;
width: 300px;
height: 300px;
background: red;
}
#innerBox{
height: 400px;
background: #000;
}
我并不是真的在寻找解决方案,而是要了解正确的实现到底是什么(以及哪些浏览器弄错了:-))。
编辑 2013 年 12 月 18 日
根据 Marc Audet 的回答,我深入研究了规范并制作了一个新的测试用例。
http://jsfiddle.net/rwgZu/79/
这里很明显所有浏览器都在同一点剪辑溢出框,也就是padding-edge”,这确实符合规范:
当溢出发生时,'overflow' 属性指定一个盒子是否被裁剪到它的填充边缘
而且,在 Chrome 中,在内框之后还有一个额外的填充。
不过有趣的是,在内框内添加溢出内容会导致所有浏览器上的结果统一:
http://jsfiddle.net/uPY8j/1/
我在规范中找不到此类条件的规则,所以我暂时将问题留待解决。
【问题讨论】:
-
我在上游向 CSS 工作组报告了这种不兼容问题:github.com/w3c/csswg-drafts/issues/129#issue-156060453
-
@BenCreasy 好东西,很高兴它终于为有用的东西做出了贡献
标签: html css internet-explorer google-chrome firefox