一次渲染过程
开启栈内存
首先当浏览器拿到页面代码之后会开启一个空间,叫做栈内存,这是用来解析代码的,属于代码解析运行环境,执行时,逐行执行,入栈执行,执行完出栈。
遇到静态资源请求
如果遇到图片、css、js等资源请求,浏览器会开辟新的线程去请求资源,这些资源会根据请求顺序放在一个空间,叫做任务队列,等待执行栈调用。
生成DOM树
第一次自上而下执行时只渲染HTML结构,形成dom树。
事件循环
等待队列会经过事件循环查看已经请求好的资源,拿到执行栈中调用,所有css资源会形成一个cssOM
渲染树
DOM树会和cssOM,组合成我们最终看到的页面,也叫渲染树
重绘和回流
重绘
触发:元素样式发生改变(如颜色、背景色等)会触发重绘,但元素位置、大小、宽高不变。
作用:根据渲染树和回流得到的信息,得到节点的绝对像素
回流
触发:当页面布局发生改变时,触发回流,导致渲染树重新计算布局和渲染。
作用:根据渲染树,计算元素在设备窗口的确切位置和大小
注:回流一定触发重绘,但重绘不一定回流