代码之家  ›  专栏  ›  技术社区  ›  Jlam

如何在浏览器中实现CSS和DOM?

  •  9
  • Jlam  · 技术社区  · 15 年前

    这是一个相当学术的问题。我想知道浏览器是如何实现的,在什么数据结构或算法中用于将CSS选择器映射到特定的DOM元素。它是通过哈希表完成的吗?dom子节点如何知道应用于父节点的样式也应用于自身等。我一直在查看Mozilla开发中心,但没有发现任何内容。任何有关这一主题的文件或书籍都将不胜感激…谢谢!

    4 回复  |  直到 12 年前
        1
  •  9
  •   Kornel    15 年前

    匹配回答问题“哪个选择器匹配给定的节点”,而不是“哪个节点匹配选择器”。这允许您根据当前节点简单地评估选择器的每个部分(比较节点名/id/类)。冗余组合器和继承是通过扫描父节点来完成的。

    如果你对接下来发生的事情感兴趣,webkit blog有一个不错的系列: WebCore rendering basics

        2
  •  2
  •   Nickolay    15 年前

    所以这里有一些稀缺的文件:

    从您的问题看来,您应该首先了解更多关于CSS应该如何工作的信息(例如,什么是规则特异性、计算样式)。

        3
  •  1
  •   Ewan Todd    15 年前

    你提到Mozilla。在特定具体实现的上下文中回答您的问题当然更容易,而不是所有可能实现的抽象概念。

    [w]使用HAT数据结构或算法将CSS选择器映射到特定的DOM元素…它是通过哈希表完成的吗?

    我想你问题的直接答案,对于ff2,可能在 style directory 火狐源代码。在该目录中搜索 "hashtable" 生成7个文件中的111个结果。

    我相信哈希表与呈现CSS样式所涉及的一些过程有着广泛的关联。

    所以,对你的问题的简短回答是,“是的,但不仅仅是哈希表。”

        4
  •  1
  •   Tyler Wright    12 年前

    W3C从定义的角度提供了一种通用的方法,我认为这有助于提供信息:

    推荐文章