好的,有很多文章都在谈论CSS中的级联优先级,我最近阅读this one并且有一些观点我认为: -
.container img
规则将覆盖img
规则看看这段代码: -
<div id="flowerContainer" >
<img id="flower" src="..." />
</div>
尝试应用以下规则: -
#flowerContainer img{width:500px;}
#flower {width:300px}
根据第二条规则,应该应用#flower
宽度规则,但应用#flowerContainer img
代替原因?
答案 0 :(得分:2)
#flowerContainer img
的特异性高于#flower
的特异性,这就是为什么应用该规则的原因。
这是因为其中一个只有一个ID选择器,而另一个同时具有ID选择器和类型选择器。
在MDN上阅读有关特异性的更多信息:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
答案 1 :(得分:0)
首先,您应该了解CSS
如何计算特异性here。
选择器的特异性计算如下:
- 计算选择器中的ID属性数量(= a)
- 计算选择器(= b)
中其他属性和伪类的数量- 计算选择器中元素名称的数量(= c) 忽略伪元素。
连接三个数字a-b-c(在具有大碱基的数字系统中)给出了特异性。
所以,在
的情况下#flowerContainer img { width:500px; } /* a=1,b=0,c=1 (a-b-c = 101) */
#flower { width:300px; } /* a=1,b=0,c=0 (a-b-c = 100) */
所以#flowerContainer img
(101)比#flower(100)
答案 2 :(得分:-1)
Here是关于CSS如何计算优先选择器的官方文档。
选择器的特异性计算如下:
- 计算选择器中的ID属性数量(= a)
- 计算选择器(= b)
中其他属性和伪类的数量- 计算选择器中元素名称的数量(= c)ignore pseudo-elements。
连接三个数字a-b-c(在具有大数字的数字系统中) base)给出了特异性。
一些例子:
* {} /* a=0 b=0 c=0 -> specificity = 0 */ LI {} /* a=0 b=0 c=1 -> specificity = 1 */ UL LI {} /* a=0 b=0 c=2 -> specificity = 2 */ UL OL+LI {} /* a=0 b=0 c=3 -> specificity = 3 */ H1 + *[REL=up]{} /* a=0 b=1 c=1 -> specificity = 11 */ UL OL LI.red {} /* a=0 b=1 c=3 -> specificity = 13 */ LI.red.level {} /* a=0 b=2 c=1 -> specificity = 21 */ #x34y {} /* a=1 b=0 c=0 -> specificity = 100 */
#id element
规则(101)比#id
规则(100)更具体,因此它们优先。