字节前端提前批面试题:触发了几次回流几次重绘,2024年最新作为一名Web前端面试者你应该知道的

本文介绍了前端面试中常见的问题——关于DOM操作如何触发重排和重绘,以及如何通过分离读写操作、样式集中改变、缓存布局信息和元素批量操作来优化性能。通过实例解析了避免频繁重排的策略,帮助面试者掌握Web前端性能优化的知识。
摘要由CSDN通过智能技术生成

div.style.left = ‘10px’;

console.log(div.offsetLeft);

div.style.top = ‘10px’;

console.log(div.offsetTop);

div.style.width = ‘20px’;

console.log(div.offsetWidth);

div.style.height = ‘20px’;

console.log(div.offsetHeight);

还是1次重排吗?

Obviously not! 此时发生了4次重排!

上文不是说浏览器有渲染队列优化机制吗? 为什么会有4次?

这和offsetLeft/Top/Width/Height有关

offsetTop、offsetLeft、offsetWidth、offsetHeight

clientTop、clientLeft、clientWidth、clientHeight

scrollTop、scrollLeft、scrollWidth、scrollHeight

getComputedStyle()(IE中currentStyle)

这些会强制刷新队列要求样式修改任务立刻执行

因为浏览器并不确定在下面的代码中是否还有修改同样的样式,为了获取到当前正确的的即时值不得不立刻执行渲染队列触发重排!!!

四.重绘与重排性能优化


1.分离读写操作

我们就可以对上面的代码进行优化

div.style.left = ‘10px’;

  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值