【发布时间】: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 放在 <head> 中,它可以正常工作(我明白为什么),但我不明白为什么当我在自己的 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