我正在努力优化Web应用程序中的滚动性能,并在最新的Chrome(v31)上遇到了有趣的行为,该行为也在Chrome Canary(v34)上有所体现。
在这个简化的示例中,我有一个简单的可滚动div:
<style>
.container {
width: 200px;
height: 200px;
overflow: auto;
background: #ccc;
}
.container div {
height: 80px;
width: 80px;
background: #555;
border-radius: 10px;
}
</style>
<div class="container">
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</div>
我启用了以下Chrome开发者设置来调查滚动性能:
当我在非视网膜显示器上加载网页时,它会在每个滚动条上重新绘制整个容器div,Chrome甚至指示如下:
但是,当我将窗口移至视网膜显示屏并刷新页面时,滚动性能会提高!它仅重画滚动条本身(有时还重画以前不在滚动视口中的内容):
高DPI行为似乎是可取的,并且滚动速度更快。不论DPI如何,都可以通过Chrome实现这种性能吗?
我没有Retina显示器计算机可以对此进行测试。我的猜测是您可以在.container上尝试“ translateZ hack”吗?
.container { -webkit-transform: translateZ(0); }
不知道这是否行得通。但是在某些情况下,它可以通过将元素分隔为自己的“图层”来帮助补救浏览器重绘。
希望这可以帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句