【发布时间】:2016-10-11 03:42:34
【问题描述】:
在使用级联样式表时,我观察到的具体顺序如下:
第一定律:内联样式
第二定律:ID选择器的数量
第三定律:类的数量选择器
第四定律:元素选择器的数量
因此,具有内联样式的项目首先出现,然后是具有一个或多个 ID 选择器的声明,然后是具有一个或多个类选择器的声明,然后是具有一个或多个元素选择器的声明。更多的 ID、类和元素分别意味着更高的优先级。
从这个角度来看,我无法理解以逗号分隔的 ID、类或元素列表适合的位置。逗号分隔的列表是否有任何特殊的优先规则?此外,在单个逗号分隔的列表中,ID、类和元素是否被视为单独的项目,以便计算特异性?
代码示例:
html, body, header {
position: absolute;
top: 0px;
}
header {
position: relative;
top: 50px;
}
在上面的例子中什么优先?逗号分隔的列表是否被视为引用单个元素,在这种情况下,标头将优先于级联中的最后一个,或者逗号分隔的列表被视为多个元素,因此优先?还是我应该首先考虑其他规则?
【问题讨论】:
-
它们都是完全相同的选择器。在第二个示例中,您只是将三个单独的选择器组合成一个。第二个优先,因为它是最后一个,因此会优先于第一个。
-
'html, body, header,
would imply that the rules declared would apply to all those selectors specified, and makes no difference in specificity to simply declaring a rule with just theheader` 选择器 - 当然除非规则在级联顺序中较低。因此,在您上面提供的示例中,header的第二条规则将超过为header声明的第一条规则。 -
我注意到上面的问题有一个错误。我应该将
html, body, header放在顶部而不是底部,并更改“逗号分隔的列表是否被视为引用单个元素,在这种情况下,标题将优先于级联中的第一个,或者是逗号划定列表被视为多个元素,因此优先?”结果以不同的方式阅读。我现在应该更改它以纠正我的错误吗? -
@Buddha Theis:你应该。如果不出意外,这对接受的答案没有影响。
-
我注意到您在那里切换接受的答案。请注意,一个问题一次只能有一个被接受的答案,即您对该问题的回答令您满意。一旦你有更多的代表,你就可以投票给对你有帮助的尽可能多的答案。
标签: css css-selectors css-specificity