DOM 与 CSSOM 合并成一个渲染树

来源:4-8 css和js的装载与执行-实战-验证css加载不会阻塞后面的 js 并发加载

慕粉18380451249

2018-09-25

老师,您好! 请教个问题:DOM 与 CSSOM 合并成一个渲染树,才能在浏览器里显示, 为何cssom没有生成,dom结构已经渲染到浏览器页面里了。
关键渲染路径”的步骤:

  1. 处理 HTML 标记并构建 DOM 树。
  2. 处理 CSS 标记并构建 CSSOM 树。
  3. 将 DOM 与 CSSOM 合并成一个渲染树。
  4. 根据渲染树来布局。
  5. 将各个节点绘制到屏幕上。
写回答

2回答

千迦

2018-10-10

你这边的渲染到浏览器里面是指?

正常的渲染流程和你这边说的五点是一样的,根据这样的步骤,元素会被绘制到页面上。

css一般在header中,同时inline的style在html解析的时候,也会被解析用于生成css树。

所以这样的话,dom结构被渲染到达浏览器页面里的时候,这些css rule都已经生成css树并且作用于渲染树上,已经生效了。

我理解又一种case是,css的样式是后续动态加载进来了,或者是javascript脚本动态加载进来了,所以第一次在解析html生成dom树,并且生成渲染树的时候,因为css的规则还没有被加入到渲染逻辑中,所以这时候生成的渲染树是不具有这些后续动态加载的css规则的。如果后续动态加载了一些css规则进来,css rule tree会更新,渲染树也会更新,并触发页面的图层重新合成,页面重新渲染。

所以cssom一定是生成了,只不过可能没有内容。后续有了新的css规则之后,对于cssom进行的就是更新。

2
1
慕粉18380451249
非常感谢!
2018-10-29
共1条回复

千迦

2018-09-25

同学你的问题我看到了,稍后进行回复

0
0

让你页面速度飞起来 Web前端性能优化

【面试必备】采用Vue-SSR和PWA等新技术,快速突破你的Web页面性能的瓶颈

1054 学习 · 123 问题

查看课程