-
获取DOM后分割为多个图层
-
对每个图层的节点计算样式结果 (Recalculate style—样式重计算)
-
为每个节点生成图形和位置 (layout–布局,重排,回流)
-
将每个节点绘制填充到图层位图中 (Paint—重绘)
-
图层作为纹理上传至GPU
-
组合多个图层到页面上生成最终屏幕图像 (Composite Layers – 图层重组)
=======================================================================
-
拥有具有3D变换的CSS属性
-
使用加速视频解码的
<video>
节点 -
<canvas>
节点 -
CSS3动画的节点
-
拥有CSS加速属性的元素(will-change)
===========================================================================
-
外观变化,位置没变,不会重新布局,不一定伴随重排
-
重绘是以图层为单位,如果图层中某个元素需要重绘,那么整个图层都需要重绘,所以
为了性能,应该让“变化的东西”拥有一个自己的图层
-
渲染对象在创建完成并添加到渲染树时,并不包含位置和大小信息。计算这些值的过程称为布局或重排,大多数会(基本一定)导致重绘
-
Resize窗口的时候产生重排(移动端没有这个问题,因为移动端的缩放没有影响布局视口)
减少浏览器运行所需要做得工作
-
元素位置移动变换时尽量使用CSS3的transform来代替top、left等操作,变换(transform)和透明度(opacity)的改变仅仅影响图层的组合
-
使用opacity来代替visibility(
现在版本的浏览器不一定准
)
-
使用visibility不触发重排,但是依然重绘
-
直接使用opacity即触发重绘,又触发重排(GPU底层设计)
-
opacity配合图层使用
,既不触发重绘也不触发重排
原因:
透明度的改变时候,GPU在绘画时只是简单的降低之前已经画好的纹理的alpha值来达到效果,并不需要整体的重绘。
不过这个前提是这个被修改opacity本身必须是一个图层
- 不要使用table布局
table-cell
- 将多次改变样式属性的操作合并成一次操作
不要一条一条地修改DOM的样式,预先定义好class
,然后修改DOM的className
- 将DOM离线后再需改
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
最后
如果你已经下定决心要转行做编程行业,在最开始的时候就要对自己的学习有一个基本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
本的规划,还要对这个行业的技术需求有一个基本的了解。有一个已就业为目的的学习目标,然后为之努力,坚持到底。如果你有幸看到这篇文章,希望对你有所帮助,祝你转行成功。
CodeChina开源项目:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】