在浏览器工作原理——step2中构建的DOM树只有节点和属性,没有任何样式信息。浏览器是如何将css规则应用到节点上,并给DOM树添加上css属性。
在构建DOM树的过程中,一次拿到上一步构造好的元素,去检查它匹配了哪些规则,再根据规则的优先级,做覆盖和调整。
css选择器各种符号
- 空格 后代,所有子孙节点
- > 子代,直接子节点
- + 相邻兄弟,紧跟自己的相邻节点
- ~ 兄弟,所有后续相邻节点
- || 列,选择表格中的一列
选择器出现的顺序,跟构建DOM树的顺序一致,这是一个CSS设计的原则,保证选择器在DOM树构建到当前节点时,可以准确判断是否匹配,无需后续节点信息。
css计算和DOM树流式构建同步进行,cssom分为rule部分和view部分,rule部分在dom开始之前就构建完成,view部分是跟着dom同步构建的。
tips:
head中的css文件会先下载完,再计算css rule,若body中有css的话 会重新计算