css - CSS 特异性如何决定应用哪些样式?

标签 css css-selectors css-specificity

CSS 如何确定何时将一种样式应用于另一种样式?

我已经通过了W3 CSS3 selectors document几次,这帮助我理解了如何在 jQuery 中更好地使用 CSS 选择器,但它并没有真正帮助我理解何时将一个 CSS 规则应用于另一个。

我有以下 HTML:

<div class='item'>
    <a>Link 1</a>
    <a class='special'>Link 2</a>
</div>

我有以下 CSS:

.item a {
    text-decoration: none;
    color: black;
    font-weight: bold;
    font-size: 1em;
}

.special {
    text-decoration: underline;
    color: red;
    font-weight: normal;
    font-size: 2em;
}

鉴于上述情况,链接 1 和链接 2 的样式将相同,由 .item a CSS 确定。为什么与 .special 关联的样式不优先于 Link 2?

显然,我可以这样绕过它:

.special {
    text-decoration: underline !important;
    color: red !important;
    font-weight: normal !important;
    font-size: 1em !important;
}

但是,我觉得这是一个 hack,由于我缺乏理解,我不得不加入。

最佳答案

它基于ID标签ID 具有最高的特异性,其次是 classes,然后是 tags,因此:

.item a     == 0 1 1      0 (id) 1 (class=item) 1 (tag=a)
.special    == 0 1 0
#foo        == 1 0 0
#foo .bar a == 1 1 1
#foo #bar   == 2 0 0

最多者获胜 :) 如果平局,文档中最后出现的获胜者。请注意,1 0 0 胜过 0 1000 1000

如果你想应用.special,让它更具体:.item a.special

关于css - CSS 特异性如何决定应用哪些样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9133570/

相关文章:

css - 用于 dashing 小部件的自定义背景图标

html - 无法解释的像素,它们来自哪里?

css - 基本 CSS 特异性层次结构

html - 如何理解这种CSS继承(或覆盖、选择)

css - 星号/ body 颜色的特异性/继承?

css - 如何在 webpack 中编译样式

css - 响应式两列 HTML 电子邮件模板

css - 星号 (*) 在 CSS 选择器中有什么作用?

css - 这是什么类型的 CSS 选择器?这是什么意思?

css - 如何选择 ID 以特定字符串开头和结尾的所有元素?