浏览器的渲染原理
- 渲染引擎:firefox用的是geoko,chrome用的是webkit
 - 过程:
- 解析html生成dom tree
- 浏览器会解析html / js / css
 
 - 构建render tree
- render tree与dom tree的不同:header标签、样式display:none的元素不在render tree里
 
 - 布局render tree
 - 绘制render tree
 
 - 解析html生成dom tree
 
repaint重绘
- 当元素的颜色等样式更改时,会触发repaint。
 
reflow回流
- 当元素的尺寸,或者说是布局(定位方式、体积、边距)发生了改变,就会倒回去重新渲染,也就是回流reflow。
 - reflow比repaint成本要高。
 - 导致reflow的具体情况(从网上看到的总结)
- 改变窗囗大小
 - 改变文字大小
 - 添加/删除样式表
 - 内容的改变,如用户在输入框中敲字
 - 激活伪类,如:hover (IE里是一个兄弟结点的伪类被激活)
 - 操作class属性
 - 脚本操作DOM:直接操作子节点,也不要频繁的添加修改元素,先把dom节点抽离到内存中进行复杂的操作然后再插入到页面上。
 - 计算offsetWidth和offsetHeight
 - 设置style属性:改变样式时最好统一通过class来修改
 
 
