dev 中 gridcontrol1 滚动条重绘_浏览器的重绘和回流(Repaint & Reflow)

本文详细介绍了浏览器的渲染过程,强调了回流与重绘对性能的影响。通过测试,展示了使用left与translate实现位移效果时,translate因CSS3优化而减少重绘和回流的问题。浏览器的渲染包括生成渲染树、回流和重绘等步骤,回流是性能关键,而浏览器有优化机制以减少不必要的回流和重绘。建议通过最小化DOM修改、使用CSS3硬件加速等方式来优化页面性能。
摘要由CSDN通过智能技术生成

参考文献:

https://developers.google.com/web/fundamentals/performance/critical-rendering-path/render-tree-construction?hl=zh-cn​developers.google.com 你真的了解回流和重绘吗 · Issue #4 · chenjigeng/blog​github.com
aa67834d7eeea99d9148297de88fe5d7.png

前言:

重绘:由于节点的几何属性发生改变或者由于样式发生改变而不会影响布局的,称为重绘,例如outline,visibility,colorbackground-color等。

回流:是布局或者几何属性需要改变就称为回流。回流是影响浏览器性能的关键因素,因为其变化涉及到部分页面(或是整个页面)的布局更新。一个元素的回流可能会导致了其所有子元素以及DOM中紧随其后的节点、祖先节点元素的随后的回流。

测试:

分别使用left跟translate实现位移效果,查看重绘&回流对浏览器性能及视觉效果的影响。

1.left效果:

031f141efdc25fe17d6c2dfbb90cfea0.gif
left效果

2.translate效果:

ed64cc002c01699a8574c792fb887144.gif
translate效果

可以看到left一直在重绘&回流,但是translate就不一样啦,这是因为CSS3做了很多优化。由此可见重绘&回流带来的性能影响及糟糕的用户体验。

浏览器的渲染过程:

本文先从浏览器的渲染过程来从头到尾的讲解一下回流重绘,如果大家想直接看如何减少回流和重绘,可以跳到后面。(这个渲染过程来自MDN)

a494c4268e188b2aeee79234dbc5a55e.png

从上面这个图上,我们可以看到,浏览器渲染过程如下:

  1. 解析HTML,生成DOM树,解析CSS,生成CSSOM树
  2. 将DOM树和CSSOM树结合,生成渲染树(Render Tree)
  3. Layout(回流):根据生成的渲染树,进行回流(Layout),得到节点的几何信息(位置,大小)
  4. Painting(重绘):根据渲染树以及回流得到的几何信息,得到节点的绝对像素
  5. Display:将像素发送给GPU,展示在页面上。(这一步其实还有很多内容,比如会在GPU将多个合成层合并为同一个层,并展示在页面中。而css3硬件加速的原理则是新建合成层,这里我们不展开,之后有机会会写一篇博客)

渲染过程看起来很简单,让我们来具体了解下每一步具体做了什么。

生成渲染

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值