CSS(GPU)动画优化

本文探讨了CSS动画对浏览器性能的影响,强调了reflow和repaint的性能消耗,提供了一系列最佳实践来优化动画性能,包括避免一次性修改DOM样式、使用离线DOM操作、利用CSS3的transform和opacity进行无重排重绘动画,以及合理使用will-change属性。同时,建议减少浏览器的重排和重绘,避免table布局,并尽量使用CSS而非JavaScript进行动画处理。
摘要由CSDN通过智能技术生成

这里写图片描述
浏览器在渲染时会将dom tree 分类多个图层,每个图层独立进行reflow、repaint,然后展现在屏幕上。
reflow和repaint都是耗费浏览器性能的操作,这两者尤以reflow为甚;因为每次reflow,浏览器都要重新计算每个元素的形状和位置。

下面是一些针对reflow和repaint的最佳实践:

  1. 不要一条一条地修改dom的样式,尽量使用className一次修改。
  2. 将dom离线后修改
    使用documentFragment对象在内存里操作dom。
    先把dom节点display:none;(会触发一次reflow)。然后做大量的修改后,再把它显示出来。
    clone一个dom节点在内存里,修改之后;与在线的节点相替换。
  3. 不要使用table布局,一个小改动会造成整个table的重新布局。
  4. transform和opacity只会引起合成,不会引起布局和重绘。

浏览器将a元素提升为一个复合层有很多种原因,下面列举了一些:

  1. 3d或透视变换css属性,例如translate3d,translateZ等等(js一般通过这种方式,使元素获得复合层)
  2. <video><iframe><canvas><webgl>等元素。
  3. 混合插件(如flash)。
  4. 元素自身的 opacity和transform 做 CSS 动画。
  5. 拥有c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值