CSS规则如何以及何时应用于显示层次结构?

时间:2014-04-28 21:54:09

标签: css stylesheet implementation

是否有可以应用于任意显示层次结构的CSS的开源或通用实现?我正在尝试为AS3中的Flash显示层次构建一个。

我很好奇用于将CSS样式应用于显示层次结构的过程。在我看来,每次添加,删除或重新定位显示对象时,以及当焦点发生变化等事件发生时,部分或全部选择器都必须重新应用于整个显示列表,因为存在选择器比如“first-child”和伪选择器,比如“:focus”。

样式的初始应用是否涉及一次扫描整个显示列表一个元素,应用样式,还是预先对所有对象进行排序并与特定规则类别相关联?或类似的东西。

我真的在寻找一个真正实现的良好的一般资源。

更新:我可能正在寻找this级别的东西,但我不知道这是否是最先进的:“分层约束提供了一种简单,统一的方式来理解大部分CSS 2.0规范。这个观点还表明约束求解器提供了一种自然的实现技术。每个样式属性和文档中每个元素的位置都可以通过变量建模。这些变量的约束来自浏览器功能,默认布局行为来自于元素的类型,文档树结构和样式规则的应用。文档的最终外观是通过找到这些约束的解决方案来确定的。这引出了如何以及何时解决约束的问题。

1 个答案:

答案 0 :(得分:1)

@Triynko,关于HTML5 Rocks的How Browsers Work

  

...该死

     
    

当遇到任何兄弟选择器时,WebCore会抛出一个全局开关,并在整个文档存在时禁用它们的样式共享。这包括+选择器和选择器,如:first-child和:last-child。

  
     

这是处理它的一种方法,sledghammer杀死苍蝇,我会记得不要使用那些选择器,永远,哈哈。

     

非常有用:

     
    

解析样式表后,根据选择器将规则添加到多个哈希映射之一。有id,类名,标签名和一般地图的地图......如果选择器是id,规则将被添加到id地图,如果它是一个类,它将被添加到类地图等这种操作使得匹配规则变得更加容易。没有必要查看每个声明:我们可以从地图中提取元素的相关规则。这种优化消除了95%以上的规则,因此在匹配过程中甚至不需要考虑它们(4.1)。

  

和@BoltClock:

  

一般情况下,复杂的选择器从右到左匹配(当然是次优到这些优化),评估简单选择器的每个序列,并逐步完成每个组合器。

<强>参考