在导航链接上否决 Bootstrap 5 样式 [重复]

Posted

技术标签:

【中文标题】在导航链接上否决 Bootstrap 5 样式 [重复]【英文标题】:Overrule Bootstrap 5 styling on nav-link [duplicate] 【发布时间】:2021-07-02 03:06:50 【问题描述】:

*编辑:这个问题已经得到了充分的回答,而我在下面描述的问题显然一开始就不存在,所以无论如何它都没有实际意义。抱歉,谢谢 Sean Varnham!

我只是在学习为网站编写代码。我正在尝试基于 Bootstrap 5 中的标准导航栏。它由几个 nav-item 元素组成,其中包含 nav-link 元素。我想让nav-link 元素看起来像我想要的那样。

我认为我应该能够解决我的 CSS 中的类,以否决 Bootstrap CSS 文件中关于同一类的任何样式。但是我设法做到这一点的唯一方法是使用!important(有人告诉我,这是懒惰的编码员的做法),通过为每个链接添加一个ID(这非常麻烦) ,或者通过更改类名(这是我当前的解决方案,另请参阅我的 CodePen here 中的完整导航栏代码,但是使用 Bootstrap 有什么意义呢?)。

我查看了 Bootstrap 5 CSS,据我所知,nav-link 元素只作为类来处理,这应该很容易被否决,对吧?

我认为它会如何工作:

.nav-link 
  color: red;
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
<li class="nav-item">
  <a class="nav-link" aria-current="page" href="#">HOME</a>
</li>

导致红色字母。

但这并没有发生(*编辑:等等,它现在确实有效。我不知道为什么以前没有。)三种有效的解决方案,但都是变通方法:

1.

.nav-link 
  color: red !important;
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
<li class="nav-item">
  <a class="nav-link" aria-current="page" href="#">HOME</a>
</li>

2.

#navhome 
  color: red;
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
<li class="nav-item">
  <a class="nav-link" id="navhome" aria-current="page" href="#">HOME</a>
</li>

3.

.nav-link2 
  color: red;
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BmbxuPwQa2lc/FVzBcNJ7UAyJxM6wuqIj61tLrc4wSX0szH/Ev+nYRRuWlolflfl" crossorigin="anonymous">
<li class="nav-item">
  <a class="nav-link2" aria-current="page" href="#">HOME</a>
</li>

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

CSS 的关键在于你的具体程度(也就是具体性)。

您可以通过多种方式来实现您想要做的事情:

    在 Bootstrap 样式表之后加载您的自定义样式表, 为您尝试更改的类创建相同/更具体的引用。

第一点就像在 htmlphp 等中将自定义样式表放在 Bootstrap 之后一样简单(取决于您在样式表中加载的方式)。

第二项可以通过以下方式实现:

.nav-link a 
    color: red;

这样,您可以专门针对 .nav-link 类中的锚点。如果这不起作用,您可能需要通过添加父节点的 ID 属性或父类来更具体,例如:

#targetID .nav-link a 
    color: red;

注意:您应该尽量减少难以覆盖的 CSS 属性的特殊性,因为过于特殊和添加大量类会迅速增加样式表的大小。这会对页面速度等产生连锁反应。

您可以在此处找到有关特异性的更多信息:

https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

【讨论】:

谢谢!我确实没有考虑过样式表的顺序以及它如何影响首先出现的 CSS 样式。此外,出于某种原因,我最初认为它会起作用的方式现在确实起作用了。我不知道为什么上次我检查它没有。我不认为我改变了什么。但无论哪种方式,这都是很好的信息! 没问题,很高兴它现在可以工作了。【参考方案2】:

这是为了改变你的 .css 文件

颜色:白色;更改颜色:红色;

.nav-link2 
font-family: 'roboto';
font-size: 14px;
font-weight: 300;
color: white;
text-decoration: none;
padding-left: 12px;
padding-right: 12px;
padding-top: 28px;
padding-bottom: 29px;

【讨论】:

哦,是的,对不起。红色仅用于演示目的。白色是我在导航栏中真正想要的颜色。【参考方案3】:

使用引导组件来制作自定义组件只会让一切变得更加困难 在我尝试使用引导分页组件进行自定义分页之前,我遇到了这个问题 然后我意识到使用 html 和 css 更加容易和清洁。 如果你真的想要那种特定的风格或者只是想快速构建一些东西,请使用引导组件

【讨论】:

同意。尽管我确实认为使用他们的代码并尝试更改每个组件,或者弄清楚他们如何做某件事是非常有教育意义的。但是,是的,一旦你对自己的编码足够擅长,你可能应该只在需要快速完成某些事情而不是太原始时才使用它们。

以上是关于在导航链接上否决 Bootstrap 5 样式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

桌面上的 Bootstrap Sidenav 样式

bootstrap 4导航栏在rails 5应用程序中不起作用

Azure 上的 Bootstrap Glyphicons 不同的字体样式

指向 Bootstrap 导航选项卡的 href 链接未在同一页面上激活

如何获得 Bootstrap 固定导航列表样式?

导航栏(折叠)不起作用 Bootstrap 5