我正在尝试优化我的网络应用程序的滚动。我有包含大量数据的数据表,滚动变得非常糟糕。我添加will-change: transform
到数据表中,但它破坏了我的表头position: fixed
(我将它们固定以允许它们随视口滚动)。元素根本不随视口移动,它们只是停留在文档流中。
但偶然我发现,如果我will-change:opacity
改用它,我的固定标题就可以了。有人可以解释这种行为吗?我找不到任何说明他们应该采取不同行动的文件。
这是一个代码笔,其中包含我正在谈论的示例。在值之间切换,并在蓝色 div 中滚动。 https://codepen.io/bkfarns/pen/aLYgrN
这也是笔的基本代码:
html:
<div class="container">
<div class="fixed">should be position: fixed</div>
<div class="too-tall">div that is too tall</div>
</div>
CSS:
.container {
margin-left: 100px;
background-color: blue;
width:400px;
height:300px;
overflow: auto;
will-change: transform;//changing this to opacity fixes the issue
}
.fixed {
background-color: grey;
position: fixed;
margin-left: 150px;
margin-top: 100px;
}
.too-tall {
background-color: red;
width: 90px;
height: 600px;
}