gpt4 book ai didi

css - 如何在 Bootstrap-vue 中更改导航栏链接的颜色

转载 作者:行者123 更新时间:2023-12-04 15:32:11 25 4
gpt4 key购买 nike

我明白它是如何在 Bootstrap4 中完成的,但同样的方法在 Bootstrap-vue 中不起作用

这是我的 Homepage.vue 文件中的代码:

<template>
<div class="forVue">
<div>
<b-navbar toggleable="sm" type="dark" variant="dark">

<b-navbar-toggle target="nav-collapse"></b-navbar-toggle>

<b-collapse id="nav-collapse" is-nav>

<b-navbar-nav class="mx-auto">
<b-nav-item href="/home">Home</b-nav-item>
<b-nav-item href="/home">Services</b-nav-item>
<b-nav-item href="/home">Contact</b-nav-item>
<b-nav-item href="/about">About Us</b-nav-item>
</b-navbar-nav>

</b-collapse>

</b-navbar>
</div>
</div>
</template>

下面是我在同一个文件里的CSS inside style标签

<style>
.nav-item {
color: red !important;
}
</style>

这不起作用,颜色保持默认。我也无法理解如何在不使用 !important 标签的情况下指定导航栏以更改整个导航栏的颜色。它适用于以下代码:

.navbar {
background-color: red !important;
}

如果没有 !important 标签,我如何让它工作?

最佳答案

摆脱!important您只需编写一个比当前应用的选择器更具体的选择器。

.nav-link颜色似乎具有 3 × class 的特异性在 BoostrapVue 中,这意味着 3 × class + 1 × el就足够了:

.nav-item.nav-item.nav-item a {
color: red;
}

注意:如果您发现必须多次重复一个类选择器很麻烦并且会在您的 CSS 中生成过多的样板代码,我经常使用的一个技巧是使用 1 × id 人为地夸大我的选择器的特异性。 :

#app .nav-item a { color: red }

关于这一点的另一个注意事项是,您甚至不需要拥有祖先 ID,因为这也可以:

body:not(#_) .nav-item a {
color: red;
}

...假设您的 <body>元素没有id="_" .

scss它变得更加简单,因为您需要做的就是将当前代码包装到 body:not(#_) { ...current code ... } 中.

随着时间的推移,我收到了一些关于此技术的评论,认为它与使用 !important 一样糟糕。 ,因为它也混淆了特异性,你最终会陷入同样的​​游戏,即当当前的选择器需要覆盖时,编写更强大的选择器变得越来越困难。

我对此的回应是,游戏规则实际上是由 CSS 的工作方式设定的。我没有制定规则,我只是在玩游戏。但最重要的部分是,不使用 !important ,我允许 JavaScript 驱动的样式优先,这是使用 !important 的最重要原因。是不好的做法。


对这类问题更一般的回答是:检查你的元素,找出哪个规则应用当前值并写一个稍微更具体的一个(或者一个同样具体的,如果你把它放在 <style> 中)你的组件的标签,因为它是最后应用的)。


另请注意,您的代码必须位于 <style> 中标签不是 scoped .如果是 scoped , 前缀为 /deep/ , ::v-deep>>>应该可以工作,但 Vue 中最近的一个尚未解决的错误会破坏 <style> 中的穿孔选择器带有 lang="scss" 的标签, 如果你的 sass-loader7.*之上(当前最新:8.0.2)。实际上,这意味着以下将起作用:

<style scoped lang="css">
/deep/ .nav-item.nav-item.nav-item a {
color: red;
}
</style>

...(其中 lang="css" 是可选的,因为它是默认值),而

<style scoped lang="scss">
/deep/ .nav-item.nav-item.nav-item a {
color: red;
}
</style>

...将不起作用

但是,这是一个(不同的)错误,它可能很快就会得到修复,届时我将删除这部分答案。

关于css - 如何在 Bootstrap-vue 中更改导航栏链接的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61029522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com