触发浏览器重排的一些操作

2 篇文章 0 订阅
2 篇文章 0 订阅
触发重排的操作
  • 页面的初次渲染
  • DOM树的结构变化,包括添加、删除dom元素
  • 获取某些属性,包括offsetTop、offsetLeft、 offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight、getComputedStyle(),获取时应当做适当的缓存
  • 改变元素位置(未脱离文档流的情况下)
  • DOM元素的几何属性变化(高度,宽度,padding,margin等)
  • 元素内容改变
  • 调整缩放,触发resize
优化方案
  • 将改变样式的属性尽可能集中放置
  • 对获取时会触发重排的属性进行缓存(运行时允许的情况下)
  • 需要改变多个样式的时候,利用切换class来实现
  • 部分元素脱离文档流操作
  • 添加和删除dom节点时,尽可能放在一起操作,比如添加一张表单的时候,直接在内存中准备好整个表单的dom元素插入,而不是用遍历的方式多次插入。
脱离文档流的情况

元素脱离文档留时,其自身的变化只会导致自身的重排,而不会影响其他元素,所以对于需要经常重绘的元素,可以将position设置为absolute或fixed,脱离文档流。

场景
  • 列表排序,先获取列表dom节点,在内存中排序,然后一次性渲染,可以显著减少重排次数。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值