【发布时间】:2018-10-10 17:30:04
【问题描述】:
我有一个应该滚动浏览器窗口的 div。我设置了 73vh 的顶部和 100vh 的边距底部。所以效果应该是,将这个 div 滚动到“浏览器窗口之外”。在 Chrome 中,这就像一个魅力,但在 Firefox 中,margin-bottom 不是窗口高度。
HTML:
<div class="container">
Hi!
</div>
CSS:
.container {
position: relative;
top: 73vh;
margin-bottom: 100vh;
background: red;
}
我已经创建了一个代码笔来重现:Code Pen example
在 Chrome 中打开 CodePen,红色框移出视图,在 Firefox 中打开 CodePen,红色框移动了一点。我想要Chrome的效果。
解决方案
基于 fcalderan 的回答:将顶部更改为边距顶部,然后它也适用于 FF。 CodePen
.container {
position: relative;
margin-top: 73vh;
margin-bottom: 100vh;
background: red;
}
【问题讨论】:
-
如果您使用 margin-top 更改顶部,它会按预期工作。似乎firefox正在从元素的静态位置计算margin-bottom(就好像它在位置:静态)
-
是的,使用 margin-top 而不是 top 它可以工作!看来我不应该把 top 和 margin 混为一谈。谢谢!
-
@fcalderan 澄清一下,当你说“静态位置”时,你的意思是如果元素没有被偏移,它会被定位在哪里?
-
@Daniel 完全正确。好像该值是在没有顶部偏移量的情况下计算出来的一样。