css - 如何确定 CSS 类的优先级?

标签 css css-specificity

我引用了一些 Bootstrap 样式表并且有一个定义

.badge {
    display: inline-block;
    min-width: 10px;
    padding: 3px 7px;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    color: #fff;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    background-color: #777;
    border-radius: 10px;
}
.alert-success {
    color: #3c763d;
    background-color: #dff0d8;
    border-color: #d6e9c6;
}

我想使用这种风格,但由于我的 HTML class="alert-success badge",它被其他定义覆盖了

.panel-default>.panel-heading .badge {
    color: #f5f5f5;
    background-color: #333;
}

现在后一个定义更加具体,它优先于我想要的 CSS。我该如何解决这个问题?

编辑: 还有很多其他类有这个问题。有没有不需要一一指定的解决方案?

最佳答案

CSS Specificity ,您应该只用自己的选择器覆盖更具体的选择器。

.panel-default > .panel-heading .badge.alert-success {
    color: #3c763d;
    background-color: #dff0d8;
    border-color: #d6e9c6;
}

编辑:其他选项可以包括:

  1. 删除/更改有问题的 CSS 文件(使用 bootstrap 很困难,但可行,如果您决定更新 bootstrap.css,维护会很头疼)
    • 更新/删除有问题的选择器
    • 添加 :not() 选择器以避免某些情况
  2. 改变您的 HTML 结构,使其遵循有问题的 CSS 选择器。
    • 更改类名和/或使用新的类名
    • 插入/删除额外的嵌套 div/元素(避免 > 直接子选择器)

谢天谢地,如果你有很多类要更新,smart regex replace是你最好的 friend ,但那是另一个话题。

关于css - 如何确定 CSS 类的优先级?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38620220/

相关文章:

html - 如何使 div 垂直溢出而不是水平溢出?

javascript - 根据特异性对一组 CSS 选择器进行排序

css - 为什么这个 CSS 选择器不比另一个更具体?

javascript - 仅在用户登录时显示弹出窗口

html - css 颜色转换延迟问题

javascript - polymer 纸页眉面板在纸盒面板中不显示任何内容

javascript - 如何从用户添加 div 和内容?

HTML。将具有子类的多个类分配给一个元素

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

CSS 低特异性规则覆盖高特异性规则