【发布时间】:2014-06-25 19:05:20
【问题描述】:
假设您有一个父 div,其中包含几个普通子级和一个绝对子级。
我读过practically everywhere 说position: absolute 的孩子不会影响父母的身高,因为它超出了正常流程。但是在我的例子中,一个绝对元素扩展了父元素,我不明白为什么。
(我尝试阅读the spec,但我真的迷路了。)
<div class="container">
<div class="block"></div>
<div class="block"></div>
<div class="block"></div>
<div class="outsider"></div>
</div>
.container {
overflow: hidden;
}
.block, .outsider {
width: 100%;
height: 1000px;
}
.block {
background: red;
}
.outsider {
position: absolute;
left: 0;
top: 3000px;
background: green;
opacity: 0.5;
}
为什么浏览器让我滚动超过元素的假定高度?它在 Chrome、Safari 和 Firefox 中似乎是一致的,所以我认为它是规范的一部分。
如何防止这种行为?如果绝对定位的元素不适合“正常”子级“指定”的容器高度,我希望将其裁剪。
【问题讨论】:
-
body 可能有一些默认的填充/边距。
-
我的同事建议我在容器上尝试
position: relative,它成功了。看在上帝的份上,我想不通为什么。 -
因为没有它,绝对位置将相对于主体,而定位
left将参考视口并忽略填充/边距? _ codepen.io/Paulie-D/pen/aexbz
标签: css scroll overflow css-position absolute