对于这样的布局: http: //codepen.io/anon/pen/dPwQod
HTML:
<div class="fixed-bg one"></div>
<div class="something"></div>
<div class="fixed-bg two"></div>
<div class="something"></div>
<div class="fixed-bg three"></div>
<div class="something"></div>
<div class="fixed-bg four"></div>
<div class="something"></div>
CSS:
.one {
background: url('http://i.imgur.com/gAn5IiK.jpg');
}
.two {
background: url('http://i.imgur.com/dPG6S6o.jpg');
}
.three {
background: url('http://i.imgur.com/rTQcvNZ.jpg');
}
.four {
background: url('http://i.imgur.com/k9aRzrU.jpg');
}
.fixed-bg {
width: 100%;
height: 300px;
background-size: cover;
background-repeat: no-repeat;
background-attachment: fixed;
}
.something {
width: 100%;
height: 200px;
background: black;
}
Chrome 会在滚动时重新绘制整个视口,使滚动非常缓慢,尤其是在视网膜显示器上。您可以通过在检查器中勾选“显示绘制矩形”来查看它。
我一直在寻找将背景强制为单个图层的方法,但没有找到适合这种布局的方法。有些人建议 translateZ(0) 并将背景放在它自己的固定 div 中,但这只有在有一个固定背景时才有效。有什么方法可以强制 chrome 在具有多个背景的滚动条上不重新绘制整个内容,例如这种布局?或者至少有一种方法可以在没有 Chrome 延迟的情况下使这种布局成为可能?
干杯。