<span id="id1" class="class1 class2">This is a test</span>
如果 #id1
、.class1
和 .class2
都有不同的互斥 CSS 规则集,哪个会胜出?我已经测试了一个例子,在某些情况下它选择(我认为)在 CSS 文件底部列出的那个,但在另一种情况下似乎是不确定的。
这种情况下是否有特定的规则?
#id1 {
color: red;
}
.class1 {
border-width: 1px;
}
.class2 {
border-style: dashed;
}
然后你的元素将具有红色文本和一个1像素粗的虚线红色边框。没有冲突,所以所有这些效果都会结合起来。(请注意,边框是红色的,因为有特殊行为。)
只有当您在多个规则中声明了相同的属性时,选择器特异性和级联才变得相关,因为那时您需要覆盖该相同属性的值。在这种情况下,如已经提到的,ID优先于类并且同样特定的规则从上到下应用;请阅读选择器特异性。
例如,如果您有以下规则:
#id1 {
color: red;
}
.class1 {
text-decoration: underline;
color: green;
}
.class2 {
text-decoration: none;
color: blue;
}
CSS 从上到下读取,所以 class2 会胜出!
ID 优先于 class。
如果一个元素使用 ID 定义了多次相同的样式,后面的将优先于前面的,除非你使用 !important
。
CSS 的优先级顺序如下:
1. !important
2. 在 HTML 元素内部定义的内联样式
3. 在 head 部分定义的内部样式
4. 外部样式表,它是指向样式表的链接 (<link rel="stylesheet" type="text/css" href="style.css" />
)
5. 浏览器默认样式
这很简单 - 更接近和更精细的那个赢了(就像生活一样)
也就是说:
如果有一个空白的表格,那么:
首先用类别开始 - 应用那些(即 class1、class2)
但你知道关于那个个体的信息(id)
然后应用它..
所以(如果有“获胜者”),id 赢了
除非标签在其属性中有 style
- 那将获胜