解析HTML,生成DOM树,解析CSS,生成CSSOM树,将DOM树和CSSOM树结合生成渲染树(Render Tree)
一、 重绘:
当影响DOM元素可见性的属性发生变化时,就会重新计算属性,浏览器会重新描绘相应的元素,这个过程叫重绘。
比如: background-color, border-color , visibility 等等。
二、回流 (重排)
当渲染树中的一部分或者全部因为元素的尺寸、布局、隐藏等改变而需要重新构建的时候,这时候就会发生回流。
三、什么时候会发生回流和重绘
添加或删除可见的DOM元素
元素的位置发生变化
元素的尺寸发生变化(包括外边距,内边距,边框大小,高度和宽度等)
内容发生变化,比如文本变化或图片被另一个不同尺寸的图片所替代
页面一开始渲染的时候 (这肯定避免不了)
浏览器的窗口尺寸变化 (因为回流是根据视口的大小来计算元素的位置和大小的)
回流一定会触发重绘,而重绘不一定会回流
----------------
四、如何减少重绘、回流???
修改html元素中对应的class名,利用class替换样式
csstext(利用cssText 属性合并所有改变,然后一次性写入)
避免设置多层内联样式
避免使用table布局
使用css3硬件加速,可以让transform、opacity、filters等动画不会引起重绘
display: none (隐藏元素、应用修改、重新显示)