这是一个相当学术的问题。我想知道浏览器是如何实现的,即使用了哪些数据结构或算法来将CSS选择器映射到特定的DOM元素。这是通过哈希表完成的吗?DOM子节点如何知道应用于父节点的样式也适用于它本身等等。我一直在查看Mozilla开发者中心,但没有找到相关资料。如果有任何文献或书籍与此相关,将不胜感激...谢谢!
这是一个相当学术的问题。我想知道浏览器是如何实现的,即使用了哪些数据结构或算法来将CSS选择器映射到特定的DOM元素。这是通过哈希表完成的吗?DOM子节点如何知道应用于父节点的样式也适用于它本身等等。我一直在查看Mozilla开发者中心,但没有找到相关资料。如果有任何文献或书籍与此相关,将不胜感激...谢谢!
匹配答案是“哪些选择器与给定节点匹配”,而不是“哪些节点与选择器匹配”。这让您可以简单地针对当前节点评估选择器的每个部分(比较节点名称/ID/类)。通过扫描父节点来完成后代组合器和继承。
如果您有兴趣了解接下来会发生什么,WebKit 博客有一系列不错的文章: WebCore 渲染基础
所以这里是稀缺的文档:
从你的问题来看,似乎你应该先学习更多关于CSS应该如何工作的知识(例如规则特异性、计算样式等)。