关注
2、避免重排:
1、浏览器自己的优化:浏览器会维护1个队列,把所有会引起回流、重绘的操作放入这个队列,等队列中的操作到了一定的数量或者到了一定的时间间隔,浏览器就会flush队列,进行一个批处理。这样就会让多次的回流、重绘变成一次回流重绘。
2、我们要注意的优化:我们要减少重绘和重排就是要减少对渲染树的操作,则我们可以合并多次的DOM和样式的修改。并减少对style样式的请求。
(1)直接改变元素的className
(2)display:none;先设置元素为display:none;然后进行页面布局等操作;设置完成后将元素设置为display:block;这样的话就只引发两次重绘和重排;
(3)不要经常访问浏览器的flush队列属性;如果一定要访问,可以利用缓存。将访问的值存储起来,接下来使用就不会再引发回流;
不要在循环内获取dom 的样式例如:offsetWidth, offsetHeight, clientWidth, clientHeight... 这些。浏览器有一个回流的缓冲机制,即多个回流会保存在一个栈里面,当这个栈满了浏览器便会一次性触发所有样式的更改且刷新这个flush栈。但是如果你多次获取这些元素的实际样式,浏览器为了给你一个准确的答案便会不停刷新这个缓冲栈,导致页面回流增加。
(4)使用cloneNode(true or false) 和 replaceChild 技术,引发一次回流和重绘;
(5)将需要多次重排的元素,position属性设为absolute或fixed,元素脱离了文档流,其变化不会影响到其他元素;
(6)如需要创建多个DOM节点,可以使用createDocumentFragment创建完后一次性的加入document
(7)尽量不要使用table布局,因为table 的每一个行甚至每一个单元格的样式更新都会导致整个table 重新布局
(8)用transform 代替 top,left ,margin-top, margin-left...
查看原帖
2 评论
相关推荐
点赞 评论 收藏
分享
12-02 11:57
南京艺术学院 设计 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客2025仙途报告 #
16868次浏览 283人参与
# 元旦假期你打算怎么过 #
1458次浏览 48人参与
# 一人说一家双休的公司 #
39次浏览 1人参与
# 我们是不是被“优绩主义”绑架了? #
2841次浏览 118人参与
# 对2025年忏悔 #
36次浏览 1人参与
# 实习没人带,苟住还是跑路? #
912次浏览 28人参与
# 找工作,行业重要还是岗位重要? #
87901次浏览 1761人参与
# 参加过提前批的机械人,你们还参加秋招么 #
105217次浏览 1647人参与
# 今年你最想重开的一场面试是? #
14677次浏览 155人参与
# 没有家庭托举的我是怎么找工作的 #
32051次浏览 263人参与
# 礼物开箱Plog #
3546次浏览 106人参与
# 秋招落幕,你是He or Be #
23866次浏览 403人参与
# 一人说一个提前实习的好处 #
25697次浏览 333人参与
# 你面试体验感最差/最好的公司 #
30873次浏览 507人参与
# 实习要如何选择和准备? #
130554次浏览 1514人参与
# 机械人晒出你的简历 #
148667次浏览 886人参与
# 华为池子有多大 #
154253次浏览 865人参与
# 工作中听到最受打击的一句话 #
14151次浏览 185人参与
# 你有哪些缓解焦虑的方法? #
44683次浏览 869人参与
# 设计人的面试记录 #
176958次浏览 1575人参与
腾讯成长空间 5958人发布