代码改变世界

CSS学习总结系列4——结构和层叠

2008-06-24 08:51  Register  阅读(179)  评论(0)    收藏  举报

层叠和继承

  1. 特殊性
  2. 继承
  3. 层叠

继承是(Inheritance)一个元素像其后代元素传递属性值所采用的机制,确定应当向一个元素应用那些规则时,用户代理(浏览器)不仅要考虑继承,还要考虑声明特殊性,另外需要考虑声明的来源。这个过程称为层叠(cascade)

特殊性

不同的方式选择了同一元素时,它们通过特殊性的比较来获得对元素应用规则的权利。其中,选择符的特殊性由选择器本身的组件确定。

选择器的特殊性
1. 对于选择符中给定的各个ID属性值,加100(0100)。
2. 类属性值、属性选择和伪类,加10(0010)。
3. 元素和伪元素(CSS2.1),加1(0001)。
4. 选择符分组和通配符无影响(加0000)。
内联样式特殊性
CSS2.1规定内联样式特殊性为1000,高于所有选择符(在CSS2中和ID选择器的特殊性相同)。
重要声明:!imoprtant
重要声明是在声明结束的分号前加!important标识,重要声明和特殊性无关且总是胜出的。

继承

继承面向所有可以传递的后代(特别的,body元素的背景样式可以传递到html元素)且没有特殊性。

层叠

特殊性相等的规则对元素的应用。

CSS2.1的层叠规则
1. 找出所有相关的规则。
2. 按照权重(高-低)对声明排序。
3. 按照特殊性(大-小)对声明排序。
4. 按照出现顺序(后-先)对声明排序(style属性认为出现在文档样式的最后)。
权重的顺序
1. 读者的重要声明。
2. 创作人员的重要声明。
3. 创作人员的正常声明。
4. 读者的正常声明
5. 用户代理声明。(浏览器缺省设置)。

层叠的顺序对链接伪类的影响

非CSS表现

非CSS表现,如font元素等的特殊性按照0处理,出现顺序认为是在创作人员样式的最前面。创作人员和读者样式都能将其覆盖,但用户代理不能。