CSS和滚动性能
我有一个树状HTML结构,由~1k个元素组成。CSS和滚动性能,css,performance,google-chrome-devtools,Css,Performance,Google Chrome Devtools,我有一个树状HTML结构,由~1k个元素组成。 页面滚动伴随着较低的FPS。 性能测试显示频繁更新层树,这需要60%的时间。 我怀疑原因在于CSS:禁用javascript不会改变任何东西,但删除所有样式可以解决问题。 那么,哪些CSS属性或选择器会导致这种行为呢?我不知道是否有任何特定的CSS规则会导致这种行为。我得看看这一页才能检查它。然而,使大型列表更平滑滚动的一种行之有效的技术是将transform:translate3d(…)添加到列表中(至少对我的公司来说,它证明了它的价值)。下面
页面滚动伴随着较低的FPS。
性能测试显示频繁更新层树,这需要60%的时间。
我怀疑原因在于CSS:禁用javascript不会改变任何东西,但删除所有样式可以解决问题。
那么,哪些CSS属性或选择器会导致这种行为呢?我不知道是否有任何特定的CSS规则会导致这种行为。我得看看这一页才能检查它。然而,使大型列表更平滑滚动的一种行之有效的技术是将
transform:translate3d(…)
添加到列表中(至少对我的公司来说,它证明了它的价值)。下面的代码片段给出了一个示例。也许这能在一定程度上解决你的问题
函数createList(id){
const container=document.getElementById(id);
for(设i=0;i<1e5;i++){
const div=document.createElement('div');
div.textContent=i;
子容器(div);
}
}
createList('container-1');
createList('container-2')代码>
正文{
显示器:flex;
柔性流:行不换行;
}
部分{
高度:500px;
宽度:500px;
溢出y:滚动;
}
#集装箱-1{
背景:红色;
}
#集装箱-2{
背景:绿色;
变换:translate3d(0,0,0);
}
我不知道是否有任何特定的CSS规则会导致这种行为。我得看看这一页才能检查它。然而,使大型列表更平滑滚动的一种行之有效的技术是将transform:translate3d(…)
添加到列表中(至少对我的公司来说,它证明了它的价值)。下面的代码片段给出了一个示例。也许这能在一定程度上解决你的问题
函数createList(id){
const container=document.getElementById(id);
for(设i=0;i<1e5;i++){
const div=document.createElement('div');
div.textContent=i;
子容器(div);
}
}
createList('container-1');
createList('container-2')代码>
正文{
显示器:flex;
柔性流:行不换行;
}
部分{
高度:500px;
宽度:500px;
溢出y:滚动;
}
#集装箱-1{
背景:红色;
}
#集装箱-2{
背景:绿色;
变换:translate3d(0,0,0);
}
尝试在滚动时对所有元素设置指针事件:无
。@Oridori我已经尝试过了,但对溢出
和属性没有帮助。@wOxxOm如何处理这个溢出
属性?设置一些特定的值?你能私下给我发一个链接到这个页面吗?我正在研究如何在官方的DevTools文档中更好地涵盖此类内容。给我的直接信息对我有用。任何其他遇到类似情况的人也欢迎给我发消息。尝试在滚动时在所有元素上设置指针事件:无
。@OriDrori我已经尝试过了,但它不能帮助玩溢出
和属性。@wOxxOm如何处理这个溢出
属性?设置一些特定的值?你能私下给我发一个链接到这个页面吗?我正在研究如何在官方的DevTools文档中更好地涵盖此类内容。给我的直接信息对我有用。任何其他遇到类似情况的人也欢迎给我留言。谢谢你的回答。使用display
和flex flow
属性作为body
,有什么意义呢?@legotin我只想将示例显示在彼此旁边。可以用float代替。然而,唯一重要的是转换:translate3d(0,0,0)
。这个“把戏”其实很古老,比如说,你看,它还是没用的(@legotin您是否将其应用于实际滚动的元素?是的,我尝试将其应用于父容器以及项目。一般来说,我知道这种方法,有时也使用过。这不是万能药,但有时会有所帮助。但这次没有。感谢您的回答。使用显示和flex flow有什么意义代码>正文的属性
?@legotin我只是想将示例显示在彼此旁边。本可以使用float代替。但是,唯一重要的是转换:translate3d(0,0,0)
。这个“技巧”其实很老,例如,请看,它没有任何帮助(@legotin您是否将其应用于实际滚动的元素?是的,我尝试将其应用于父容器以及项目。一般来说,我知道此方法,有时使用过。这不是万灵药,但有时会有所帮助。但这次不是。