到底生成render树的过程,是为每个DOM元素查找匹配的selector,还是为每个selector查找匹配的DOM元素呢?

来源:6-2 CSS的解析原理

图灵_0002

2014-11-15 12:20

如题,前半部分说的是“对于每个 DOM 元素,必须在所有 Style Rules 中找到符合的 selector 并将对应的规则进行合并。”, 后半部分的例子说的是解析selector然后找到匹配的DOM元素



4.如果正向解析,例如「div div p em」,我们首先就要检查当前元素到 html 的整条路径,找到最上层的 div,再往下找,如果遇到不匹配就必须回到最上层那个 div,往下再去匹配选择器中的第一个 div,回溯若干次才能确定匹配与否,效率很低。


不太明白

写回答 关注

4回答

  • 慕仰8177283
    2020-03-30 11:12:44

    出教程的人把浏览器的生成cssom和jquery的根据选择器获取对应元素的两个概念搞混了,白费我一上午

  • 慕慕7300641
    2018-08-01 11:40:51

    应该是

    为每个selector查找匹配的DOM元素

    ,例如「div div p em」,我们首先就要检查当前元素到 html 的整条路径,找到最上层的 div,再往下找,如果遇到不匹配就必须回到最上层那个 div,往下再去匹配选择器中的第一个 div,这里的div是指selector中的div

  • daydaytop
    2016-10-24 23:08:24

    文字说了

    选择器的「解析」实际是在这里执行的,在遍历 DOM Tree 时,从 Style Rules 中去寻找对应的 selector。

    后面从selector到 dom 只是一种解释方法。 告诉 这种规则 是从右到左的。

  • giscafer
    2015-05-17 17:06:34

    正常查找的过程是逆向,简单的理解就是先“关键词搜索”,再在“搜索到的结果”(减少了好多不符合的判断)中进行查找匹配——回溯。。。。

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84047 学习 · 280 问题

查看课程

相似问题