在我们的浏览器中输入了一个url后,我们的服务器便会返回一堆字符串给我们,这个字符串就是传说中html。
从得到html字节开始,dom树便开始勾践了,遇到以下情况时候dom树的构建会被暂时阻塞:
① 网络卡
② 有未加载的脚本
③ 样式还未加载结束就遇到script
dom树是基础,dom树构建结束以后便根据样式与dom构建我们的渲染树了,这个时候样式文件便会阻塞我们的页面渲染。
PS:有些网页会把CSS写在页面里,而不是外部文件是为了避免页面闪烁,或者出现裸奔的局面。
当样式表加载结束后,渲染树也被构建好了,我们的页面就基本成型了。
渲染树一旦构建完成后,若是js脚本操作dom,就很可能引起页面回流,过多的回流是前端性能的杀手。
浏览器下载的顺序是由上到下的,渲染顺序也是由上到下的,下载样式表与渲染树形成是同步完成的
在渲染到页面某一部分时,上面的所有部分已经下载完成,并且渲染结束(一旦有js引起改变,边可能引起之前元素发生回流)
若是浏览器中有多个样式表,在所有样式表下载结束后浏览器又会将所有的样式表放到一起重新解析,会对之前的所有元素重新渲染,所以样式表过多也不是太好的。
PS:我们在做页面时候要注意页面的大小开始不宜过大,这样可以渲染的很快,以延迟加载的方式进行。
以上的逻辑可以分割如下:
① 构建dom树
② 构建render树
PS:渲染树,写英文为了防止以后被问到不知道是什么,包含颜色和属性的矩形块。
③ 布局render树,确定每个节点在屏幕上的确切坐标,然后开始绘制。