Chrome +位置的奇怪行为:固定+背景附件:已修复

时间:2018-06-18 17:36:41

标签: css google-chrome css-position background-attachment

在SO和其他地方已经多次报道过这个问题,但我找不到任何有效的解决方案。

如果你有一个固定定位的div具有固定附加的背景,在某些特定情况下,渲染在Google Chrome上有问题(在Firefox和IE11上测试没有问题)。

我在下面编写了以下代码来说明问题: https://codepen.io/EricRondo/pen/PaENpe

正如您所看到的,仅在Chrome上,背景并不覆盖所有div,其高度应为400px。

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

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

我遇到了许多解决方案:

-webkit-transform: translateZ(0);

虽然它确实在"有些"案例,包括上面的codepens,它不在我的情况下,它涉及更多的容器和JS代码。但问题的根本基本相同:只有当固定的div具有背景附加时才会发生:固定。

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

Firefox没问题:干净平滑的视差效果,但Chrome使用这种奇怪的行为。当添加translateZ(0)或任何其他" GPU技巧"在容器上它变得迟钝/生涩,远非例外行为。

感谢提前获得任何建议或解决方案!

1 个答案:

答案 0 :(得分:0)

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

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

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

然后:

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

基本上将.elt div包装在容器div中,也就是位置:fixed。它适用于codepen,但不确定它是否适用于您在实际网站上的特定情况......