1.在浏览器中输入URL,交给DNS域名解析,找到IP,向服务器发送请求;(里面还有缓存,http协议,TCP等等)
2.服务器返回数据,浏览器接收文件(html,js,css,img...),二进制文件。
二进制转换成html,比如index.html
构建DOM树,html解析器,过程中遇到没有defer和async的<script>时,会终端解析,等待<script>下载完成继续开始解析。
文件解析的过程中遇到含有defer和async的<script>时,会放到后台进行下载,并不会阻止当前文件的解析。(defer是整个页面解析完毕后才开始执行。async是异步执行,页面未必解析完毕)
3.构建css树,css解析器
4.构建render树,dom树+css树
5.布局layout与绘制point,计算对象之间的大小,确定每个节点在屏幕的确切坐标。
reflow(回流):当元素属性发生改变且影响布局时(宽高、内外边距等),产生回流,相当于刷新页面
repaint(重绘):当元素属性发生改变且不影响布局时(颜色、透明度等),产生重绘,相当于不刷新页面,动态更新内容。
重绘不一定引起回流,回流必将引起重绘