当使用overflow: scroll联合padding: /* ... */CSS属性,在元件的底部的填充缺少在Firefox.(但适用于Chrome和Safari.)
我是否遗漏了某些内容或是否有任何解决此问题的方法?
注意:该演示不使用任何库进行规范化,但我也尝试normalize.css过,但没有成功.
这个问题关系到这两个:
1.CSS -应用填充与滚动框,底部填充不起作用
2. 底部填充,溢出的元素上不工作在非Chrome浏览器,
但我没有找到它为什么会发生的任何地方,这意味着,为什么在Chrome(31)和Opera(18)中出现了填充,而在Firefox(26)和IE(9-10)中却没有.
这是我的测试用例: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;
}
Run Code Online (Sandbox Code Playgroud)
我不是在寻找修复,而是要了解正确的实现究竟是什么(以及哪些浏览器错了:-)).
编辑 2013年12月18日
根据Marc Audet的回答,我挖掘了规范并制作了一个新的测试用例.
http://jsfiddle.net/rwgZu/79/
这里显而易见的是,所有浏览器都在同一点剪切溢出框,这是填充边缘",这确实符合规范:
每当发生溢出时,'overflow'属性指定是否将框剪切到其填充边缘
而且,在Chrome中,内盒后面还有一个额外的填充物.
有趣的是,在内部框中添加溢出的内容会在所有浏览器上产生统一的结果:http:
//jsfiddle.net/uPY8j/1/
我在规范中找不到这种条件的规则,所以我现在仍然要问这个问题.
我有一个容器div,里面有一些填充物,display: grid并overflow: auto已设置。当子级div的高度大于父级的高度并且出现滚动条时,它会滚动,以便没有底部填充。
这是一个提琴手。
.container {
background: red;
display: grid;
height: 300px;
padding: 3em;
overflow: auto;
width: 300px;
}
.child {
height: 500px;
background: #000;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="child"></div>
</div>Run Code Online (Sandbox Code Playgroud)
但是,如果容器的制作方式不是display: grid,则向下滚动时会出现底部填充。
display: grid这是元素的预期行为吗?如果是这样,为什么?恢复底部填充的正确方法是什么,最好只使用CSS?