【发布时间】:2014-12-29 11:41:17
【问题描述】:
鉴于此 html:
<body>
<div id="a"></div>
<div id="b"></div>
</body>
我希望#b 填充其容器块的所有剩余垂直空间,我从这个开始:
body {
height: 500px;
width: 500px;
overflow: hidden;
}
#a {
height: 100px;
width: 100px;
}
#b {
height: 100%;
width: 100%;
}
所以#b 是100% 高度,这意味着它正在占用其父容器块的高度,即500px,问题是overflow: hidden; 似乎不起作用,#b 不是剪辑。
另一方面,如果我将#a 和#b 与另一个具有与上面body 相同属性的div 包装,我会得到想要的结果:
#wrap {
height: 500px;
width: 500px;
overflow: hidden;
}
#a {
height: 100px;
width: 100px;
}
#b {
height: 100%;
width: 100%;
}
当然是这个 html:
<body>
<div id="wrap">
<div id="a"></div>
<div id="b"></div>
</div>
</body>
我的问题是为什么div 和body 似乎具有相同属性的不同行为?有没有什么方法可以在没有包装的情况下获得相同的效果?
为了说明问题,我创建了两个 jsFiddles:
jsFiddle 使用 body 标签作为包装器:http://jsfiddle.net/3AMtG/
jsFiddle 以 div 标签作为包装器:http://jsfiddle.net/2QWn3/
具有相同属性的两个 jsFiddle 会产生不同的结果。这是为什么呢?
【问题讨论】:
-
我看不出你的两个例子之间有什么区别,这也许是重点,我猜 body 标签比 div 标签具有更基本的价值,每个浏览器都有自己的渲染方式等@Firefox 19.0.2