css - 自定义 css 被 bootstrap css 覆盖

标签 css twitter-bootstrap twitter-bootstrap-3

我正在使用 Bootstrap 3,我有一个显示一些数据的表格。在此表中,我应用了一些 javascript 进行条件格式化,如果满足条件,我将元素的类设置为“红色”

.red {
background-color:red;
color:white;
}

元素HTML如下:

<td class="red">0</td>

我现在在应用文本颜色的奇数行上发生冲突,但背景颜色被来自 Bootstrap 的以下 css 覆盖。

.table-striped > tbody > tr:nth-child(odd) > td,
.table-striped > tbody > tr:nth-child(odd) > th {
  background-color: #f9f9f9;
}

我怎样才能解决这个冲突并确保红类占上风?

最佳答案

特异性

您的问题很可能与特异性有关。 Chris Coyier 在 CSS specificity 上发表了一篇很棒的文章.我还建议您查看这个方便的 specificity calculator .

使用该计算器,我们可以看到 .table-striped > tbody > tr:nth-child(odd) > td 的特异性为 23。因此,要覆盖它,任何新的规则需要具有等于或大于 23 的特异性。.red 为 10,因此不会削减它。

在这种情况下,它应该像匹配现有的特异性一样简单,然后将您的类添加到其中。 .table-striped > tbody > tr:nth-child(odd) > td.red 为我们提供了 33 的特异性。由于 33 大于 23,您的规则现在应该有效。

请在此处查看工作示例:http://bootply.com/91756

!重要

一般来说,你不应该使用 !important 除非你不希望那个规则被覆盖。 !important 基本上是核选项。我相当有信心地说,如果您了解特异性,您永远不需要 !important 来使自定义规则在像 Bootstrap 这样的框架中正常工作。

更新

经过一番思考,我在这里提供的规则可能有点太具体了。如果要突出显示未剥离的表格上的单元格,会发生什么情况?为了使您的规则更加全局化,同时仍然具有足够的特异性以在剥离表中工作,我会选择 .table > tbody > tr > td.red。这与 Bootstrap 剥离具有相同的特异性,但也适用于未剥离斑马纹的表格。更新的例子在这里:http://bootply.com/91760

关于css - 自定义 css 被 bootstrap css 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768794/

相关文章:

css - 1% 迷失在 Chrome 中

javascript - Bootstrap模态主体和模态页脚覆盖同一区域

html - 如何让我的 bootstrap navbar-toggle 覆盖内容?

css - Bootstrap 3 - 并排显示多个面板

css - XHTML换行空格问题

javascript - 将大图像站点转换为 html/css/javascript 的最简单方法?

css - 自动换行后的边距将被忽略

javascript - 当另一个面板打开时关闭 Accordion 面板

javascript - 如何使用 bootstrap 和 fontawesome 将我的弹出窗口设置为单击而不是悬停?

jquery - bootstrap 4 模式在调用隐藏后未关闭