前端手艺人 一个前端菜鸟的自嘲

浏览器渲染

浏览器如何渲染页面

浏览器解析

  1. 浏览器通过请求的URL进行域名解析, 向服务器发送请求,接收文件(比如html,css,js,image,audio等等)
  2. HTML文件加载后,开始绘制文档树(DOM tree)
  3. CSS样式加载后,开始绘制和构建CSS RUle tree
  4. Javascript脚本文件加载后,通过DOM API和CSS DOM API 来操作文档树和CSS Rule tree

浏览器渲染

  1. 浏览器引擎通过 DOM Tree 和 CSS Rule Tree 构建 Rendering Tree
  2. Rendering Tree 并不与 DOM Tree 对应,比如像 <head> 标签内容或带有 display: none; 的元素节点并不包括在 Rendering Tree 中 。
  3. 通过 CSS Rule Tree 匹配 DOM Tree 进行定位坐标和大小,是否换行,以及 position、overflow、z-index 等等属性,这个过程称为 Flow 或 Layout 。
  4. 最终通过调用Native GUI 的 API 绘制网页画面的过程称为 Paint 。

Repaint

当一个元素发生改变的时候,但是没有不会改变位置上的属性,比如改变了一个background-color,color,visibility,font等一些无关位置的属性时。浏览器会为新的样式重绘该元素,这个过程叫做Repaint(重绘)

Reflow

当一个元素的在html中的位置,宽度,高度以及影响页面布局的属性发生改变是,这些属性的改变可能会导致页面中的元素重新排列,这个过程叫做Reflow(回流)

导致Reflow的几个因素

  1. 增加,删除,改变DOM节点
  2. 增加,删除’class’样式
  3. 元素尺寸的改变
  4. 文本内容的改变
  5. 浏览器resize尺寸的改变
  6. 动画效果以及:hover的激活
  7. 等等

如何提升css选择器的性能

提升css选择器的性能