【问题标题】:Bootstrap 4 CSS Override Not Working Unless Placed in <HEAD>Bootstrap 4 CSS Override 除非放在 <HEAD> 中否则不起作用
【发布时间】:2020-07-16 19:26:47
【问题描述】:

按照this SO Question 的解决方案,我把它放在我自己的 CSS 中:

#bootstrap-override .carousel.slide {
      max-width: 1920px;
      min-width: 900px;
      overflow: hidden;
      margin-left: auto;
      margin-right: auto;
    }

#bootstrap-override .carousel-inner {
      width: 1920px;
      left: 50%;
      margin-left: -960px;
    }

但是……它不起作用。由于某种原因,Bootstrap 4 自己的 CSS 获胜。这是 Bootstrap 的 CSS:

.carousel {
  position: relative;
}

.carousel-inner {
  position: relative;
  width: 100%;
  overflow: hidden;
}

.carousel-inner::after {
  display: block;
  clear: both;
  content: "";
}
// the .slide class doesn't appear anywhere (I'm guessing it's just used by the JS, but I don't know that).

我的 CSS 也是在 Bootstrap 之后定义的:

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto&family=Roboto+Condensed&display=swap">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
  <link rel="stylesheet" href="./css/index.css">
  <title>...</title>
</head>

如果我将我的覆盖 CSS 放在 &lt;head&gt; 中,它可以正常工作(我明白为什么),但我不明白为什么当我在自己的 CSS 中指定 id+class 时它不工作。据我了解(在这一点上,这肯定是非常错误的)即使没有指定 id,我的 CSS 也应该胜过 Bootstrap 的 CSS。有谁知道用什么 Cascading-Style-Steroids Bootstrap 榨汁?

编辑: 根据要求添加相关的 HTML。

<body id="bootstrap-override">
    <div id="carousel" class="carousel slide" data-ride="carousel">
        <ol class="carousel-indicators">
            <li data-target="#carousel" data-slide-to="0" class="active"></li>
            <li data-target="#carousel" data-slide-to="1"></li>
            <li data-target="#carousel" data-slide-to="2"></li>
        </ol>
        <a class="carousel-control-prev" href="#carousel" role="button" data-slide="prev">
            <span class="carousel-control-prev-icon" aria-hidden="true"></span>
            <span class="sr-only">Previous</span>
        </a>
        <a class="carousel-control-next" href="#carousel" role="button" data-slide="next">
            <span class="carousel-control-next-icon" aria-hidden="true"></span>
            <span class="sr-only">Next</span>
        </a>
        <div class="carousel-inner" style="height: 100%;"">
            
            <div class=" carousel-item active">
                <img class="d-block" src="./res/image.png" alt="First slide">
                <div class="carousel-caption d-none d-md-block">
                    <table style="margin-left:auto; margin-right:auto;">
                        <tr>
                            <td class="align-middle">
                                <img src="./res/logo.png" alt="...">
                            </td>
                            <td class="align-middle">
                                <h3>...</h3>
                            </td>
                        </tr>
                    </table>
                </div>
            </div>

            <div class="carousel-item">Slide #2...</div>
            <div class="carousel-item">Slide #3...</div>
            
        </div>
    </div>
</body>

【问题讨论】:

  • 我们也需要您的 HTML。首先检查您是否有带有id="bootstrap-override" 属性的块。
  • 您是否检查过在每个覆盖的末尾添加 ``` !important``` 是否可以解决问题,例如 left: 50% !important;
  • 我还没有尝试过!important;,因为(基本上)我读过的所有内容(包括绝大多数与 CSS 相关的 SO 问题)都非常顽固地认为从不解决 CSS 特异性问题。从哲学上讲,我也不喜欢将它作为解决方案,因为如果我现在或将来编写的每个 Bootstrap CSS 覆盖都必须这样做,它会严重影响我的 CSS。你只是建议它作为一个测试吗?

标签: html css bootstrap-4 css-specificity


【解决方案1】:

你能检查出以下可能性吗-:

  • 以下链接的 css 文件是否实际工作?只需尝试为 body 提供背景颜色。
  • 如果 css 类链接正确,那么类的命名 + id 是否正确?
  • 如果合适,那么分享一个我覆盖 Bootstraps carousal css 的 carousal 示例。希望它是有帮助的。如果这没有帮助,请您提供更多详细信息,例如轮播的示例 html 标记。

谢谢。

JS-fiddle 链接供参考

自定义 CSS

#carouselExampleControls {
  height: 100px;
  text-align: right;
  background: gray;
}

.img-fluid {
  max-height: 100px;
}

HTML

<div id="carouselExampleControls" class="carousel slide" data-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <svg class="bd-placeholder-img bd-placeholder-img-lg d-block w-100"  xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: First slide"><title>Placeholder</title><rect  fill="#777"></rect><text x="50%" y="35%" fill="#555" dy=".3em">First slide</text></svg>
    </div>
    <div class="carousel-item">
      <img class="img-fluid" src="https://thumbs.dreamstime.com/b/dead-tree-tall-portrait-view-blue-sky-background-57002950.jpg" alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="img-fluid" src="https://images.pexels.com/photos/414171/pexels-photo-414171.jpeg" alt="Third slide">
    </div>
  </div>
  <a class="carousel-control-prev" href="#carouselExampleControls" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleControls" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
</div>

https://jsfiddle.net/chris495b/e0jzumnc/3/

嘿,如果您已正确链接您的文件,它应该显示在 devtools 中,如下面的屏幕截图。您能否也分享一下。这对调试问题非常有帮助!

【讨论】:

  • 我可以确认我的 CSS 文件已正确链接并被 Chrome 解释。 (除了我在这里发布的内容之外,它还有其他内容,这些内容工作正常。)至于正确命名,我相信我有。其他人要求我分享相关的 HTML(我怀疑排除了同样的事情)所以我有。
  • 嘿,如果你已经正确链接了你的文件,它应该像上面的屏幕截图一样显示在 devtools 中。你能不能也分享一下。这对调试问题非常有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
相关资源
最近更新 更多