【问题标题】:Why does .border-0 override .border-bottom in Bootstrap 4.0.0为什么 .border-0 在 Bootstrap 4.0.0 中会覆盖 .border-bottom
【发布时间】:2018-06-16 13:33:22
【问题描述】:

我在使用 Bootstrap 4.0.0 实用程序类时遇到了问题。

确切地说,在元素上应用 class="border-primary border-bottom" 时,我遇到了一些(在我看来)奇怪的行为。 当我在 Chrome 中查看 DevTools 时,我看到以下输出:

.border-primary { // This overrides color assigned from .border-bottom
    border-color: #007bff!important;
}

.border-bottom {
    border-bottom: 1px solid #dee2e6!important;
}

.border-primary 就像它的颜色声明覆盖了 .border-bottom 颜色声明一样... 为什么在类 .border-bottom 之前设置类 .border-primary 时会发生这种情况?后一个不应该覆盖前一个吗? 它们都具有 !important 标签和相同的特异性(据我所知)。唯一闻起来很有趣的是我们设置的方式 .border-primary 的边框颜色,它似乎比 .border-bottom 类更明确。

在元素上应用 class="border-0 border-bottom" 时也会出现类似的边框问题。

在咨询 DevTools 时,它看起来像这样:

.border-0 {
    border: 0!important;
}

.border-bottom {
    border-bottom: 1px solid #dee2e6!important; // This is clearly overridden by border-0
}

基本上,不是用 .border-0 拒绝所有边框,然后通过 .border-bottom 在底部应用边框,.border-0 似乎覆盖了所有和 尽管在 .border-0 之后应用了 .border-bottom ,但删除所有边框。这与我认为 CSS 的工作方式背道而驰。

如果我应用 class="border-0 border-primary border-bottom" .border-0 覆盖 .border-bottom,并且 .border-primary 将颜色设置为主要颜色,这意味着什么,因为没有边框,因为的 .border-0。为什么会发生这一切?它是 CSS 的东西,Bootstrap 4.0.0 的东西,还是其他东西?请帮忙

我在下面附上一个 JSFiddle 示例。

Live demo

【问题讨论】:

  • 你检查好 CSS 了吗?因为.border-primary 晚于.border-bottom .. 而border-0 晚于.border-bottom

标签: css bootstrap-4 border


【解决方案1】:

这个基本在Why is there an important override on the border classes's color property in Bootstrap?回答

正如您在文档中看到的那样,borders are additive and subtractiveborder--*-0 类旨在从已经具有边框的元素(例如卡片)中移除边框,无论是所有边还是特定边。

其他border-* 类用于添加边框。

因此,在border-0 border-bottom 的情况下,是的border-0 按预期从所有边移除边框。在您的示例中,使用 border-0 没有意义,因为 box 没有开始的边框。

如果您只想在已经有边框的元素上显示border-bottom border-primary(即:card),您可以使用:border-primary border-left-0 border-right-0 border-top-0...border-primary 来更改现有的边框颜色,并且border-left-0 border-right-0 border-top-0 删除现有边框。

【讨论】:

  • 那是因为在 CSS 中一个跟随另一个。
  • 令我烦恼的是,当我在 .border-bottom 之前应用 .border-primary 时,.border-bottom 颜色会被覆盖,即使这两个类都有重要的标签和相同的特性。如果我使用边框颜色创建自定义 .my-border-primary 类:蓝色!重要,并将其设置在这样的元素中:元素 class="my-border-primary border-bottom",那么 .border-bottom 将覆盖 .my-border-primary 的颜色 为什么我的自定义类会发生这种情况,但引导程序的类似乎覆盖了一些东西。类似的事情也适用于边界底部混乱
  • 一个接一个,第一个是border-primary,第二个是border-bottom,-border-bottom不应该是覆盖的那个吗?
  • 我刚刚意识到你在 CSS 中一个跟随另一个的意思 - Bootstrap 的 CSS 的顺序是这样的:border-bottom CSS 代码在border-primary CSS 代码之前
猜你喜欢
  • 2021-12-09
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 2020-05-20
  • 2019-03-26
  • 2014-05-27
相关资源
最近更新 更多