我想知道两者之间是否存在差异 1.)10,000个可见的tablerow 2.)使用display:none
隐藏10,000个tablerow我想知道的是。如果页面上显示所有10,000行,是否会导致页面滚动滞后?
但如果我隐藏其中的9000个。这可以减少滞后吗?多谢你们。
答案 0 :(得分:2)
一般来说,display: none;
会为浏览器节省一些工作。
浏览器将首先解析HTML并构建所谓的DOM(文档对象模型),当收到所有CSS时,它将继续构建CSSOM(CSS对象模型)。这两个组合将给渲染树。
使用渲染树,浏览器将执行布局步骤(决定每个元素在屏幕上的位置以及它的大小),然后在屏幕上绘制页面。
然而,当将DOM和CSSOM组合成渲染树时,浏览器将丢弃display: none;
的所有子树,因此在布局和绘制步骤中的工作量较少。
答案 1 :(得分:2)
刚开始讨论这个问题并且想把我的2美分也用到
答案 2 :(得分:0)
好问题! 不是范围太广,讨论得不够。 我正在基于我遇到的延迟加载问题并交叉引用其他网站(如Twitter和Reddit feed)进行研究。
灯塔用DOM树标记页面:
例如,我发现Reddit的得分 26 令人沮丧。
建议采取的措施包括“避免DOM大小过多1,456个元素”。
Reddit.com:灯塔说:
较大的DOM将增加内存使用量,导致样式更长 计算,并产生昂贵的版图重排。学到更多。反应 考虑使用
react-window
之类的“窗口”库来最小化 如果要渲染许多重复的对象,则创建的DOM节点数 页面上的元素。学到更多。另外,尽量减少不必要的重新渲染 使用shouldComponentUpdate,PureComponent或React.memo并跳过 仅在使用某些依赖项已更改之前有效 效果挂钩以提高运行时性能。