Chrome 的奇怪行为 + 位置:固定 + 背景附加:固定



这个问题已经在SO和其他地方报告了好几次,但我找不到任何工作良好的解决方案。

如果你有一个固定定位的div和固定附加的背景,在某些特定条件下,渲染在谷歌浏览器上是有问题的(在Firefox和IE11上测试没有问题(。

我在下面制作了代码笔来说明问题: https://codepen.io/EricRondo/pen/PaENpe

如您所见,仅在Chrome上,背景并不能覆盖所有div,这应该是400px的高度。

效果取决于"顶部"位置。以下是当顶部增加 50px 时会发生什么: https://codepen.io/EricRondo/pen/WydwMW

我添加了另一个具有定义高度的div,因为没有滚动实际上根本没有问题。很奇怪!

我遇到了许多解决方案,例如:

-webkit-transform: translateZ(0);

但是,虽然它在"某些"情况下确实有效,包括上面的代码笔,但它在我的情况下不起作用,这涉及更多的容器和 JS 代码。但是问题的根源本质上是相同的:只有当固定定位的div具有背景附加:固定时,才会发生。

有问题的完整网站在这里: http://reims.dev-indelebil.com/

火狐没有问题 :干净流畅的视差效果,但是在Chrome上,这种奇怪的行为正在发生。当在容器上添加 translateZ(0( 或任何其他"GPU 技巧"时,它变得完全滞后/生涩,与例外行为相去甚远。

提前感谢您的任何建议或解决方案!

我玩弄了它并想出了这个,我不确定它是否适用于您的具体情况:

https://codepen.io/anon/pen/ERogXM

.fixed {
position:fixed;
}
.elt {
position:fixed;
top:250px;
}

然后:

<div class="fixed">
<div class="elt"></div>
</div>

基本上将 .eltdiv 包装在一个容器div 中,该容器div 也是 position:fixed。它在代码笔中工作,但不确定它是否适用于您在实际网站上的特定情况......

最新更新