CSS解析是平时工作中基本不会接触到的一块,原因很简单,这部分代码基本不会出现BUG。这就说明了这部分代码比较“简单”,为何说它比较简单呢,因为它只干了三件事:
1. 解析CSS ,使用内部数据结构表示
2. 重新组织数据,为第三步做准备
3. 将样式信息装入相应RenderStyle,以备排版使用
这三件事在逻辑上来说相对比较简单,但怎样实现的优美、高效又是另外一回事情了。
这篇和这篇文档从总体上介绍了CSS引擎,这篇文档介绍了CSS解析之前的调用过程,这篇文档主要介绍了重新组织数据时使用的数据结构和算法,而这篇文档介绍了在CSS中新增一个样式所需要做的工作。
由于我只是浅尝辄止的浏览了下这部分,理解完全没有前述各位大牛深刻。但在实际查看代码中发现,我使用的webkit版本无法与上述任何一篇文档的介绍完全匹配。说明随着webkit版本迭代,CSS引擎这部分代码还是有相当的改动。但不论是算法还是结构的改动,上面三件事应该是不会变的。所以理解了CSS引擎的基本思想,还得结合自己的webkit版本去解决实际问题。