前面已经介绍过了,dom树和css树合并之后,形成一棵最终的RenderTree,最后这颗RenderTree才会被渲染到页面。

比如下面的css会转成下面的树

body { font-size: 16px }

p { font-weight: bold }

span { color: red }

p span { display: none }

img { float: right }

css规则树

灰色的是继承过来的属性。

首先几个大标签,比如htlm肯定是最外面的,body,head,这几个并排在html下面。

只是说上面这个例子只有body,然后其他标签自然就是他的子标签啦。

最后的cssom树如上面所示.

就是根据了css来搞的。

 

css匹配原则

 

查找样式表是按照从右到左的顺序去匹配的。拿上面这个css图来说吧:

例如: body p span{font-size: 16px},先遍历整颗树的span标签,找到两个,分别是body-span标签和body-p-span,然后查找span的父类,淘汰掉body-span,找到body-p-span,再向上,就找到body,ok匹配结束,设想,如果span非常之多,然后有很多类似的后缀,比如body-b-div-span和html-b-div-span,我们要匹配的是body-b-div-span,这样子,html-b-div-span就完完全全多匹配了3次了(多匹配了b、div、span),这样子性能肯定是非常糟糕的。

所以,我们平时写CSS时,尽量用id和class,千万不要过渡层叠。因为用id或者class,可以迅速再cssom树上找到对应的class和id对应的css样式。

 

相关文章:

  • 2021-12-06
  • 2021-11-14
  • 2021-05-25
  • 2021-08-05
  • 2022-02-13
  • 2021-07-15
  • 2022-12-23
猜你喜欢
  • 2022-02-08
  • 2021-07-20
  • 2022-12-23
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-11-28
相关资源
相似解决方案