You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3+Bootstrap5项目中默认选中的nav-link样式不生效问题

问题描述

我希望高亮选中的nav-link,Middle和Big选项的样式切换正常,但第一个Small选项始终无法高亮:初始状态为黑色,切换其他选项后再切回Small仍无变化。已检查ID、类名并调整CSS顺序,但此问题仍存在,怀疑类名拼写错误但未找到,代码如下:

<template>
  <div >
    <nav>
      <div class="nav nav-tabs" id="nav-tab" role="tablist">
        <button
          class="nav-link car-head active"
          id="nav-ssprinter-tab"
          data-bs-toggle="tab"
          data-bs-target="#nav-ssprinter"
          type="button"
          role="tab"
          aria-controls="nav-ssprinter"
          aria-selected="true"
        >Small
        </button>
        <button
          class="nav-link car-head"
          id="nav-msprinter-tab"
          data-bs-toggle="tab"
          data-bs-target="#nav-msprinter"
          type="button"
          role="tab"
          aria-controls="nav-msprinter"
          aria-selected="false"
        >
          Middle
        </button>
        <button
          class="nav-link car-head"
          id="nav-xlsprinter-tab"
          data-bs-toggle="tab"
          data-bs-target="#nav-xlsprinter"
          type="button"
          role="tab"
          aria-controls="nav-xlsprinter"
          aria-selected="false"
        >
          big
        </button>
      </div>
    </nav>
    <div class="tab-content" id="nav-tabContent">
      <div
        class="tab-pane fade show active"
        id="nav-ssprinter"
        role="tabpanel"
        aria-labelledby="nav-ssprinter-tab"
        tabindex="0"
      >
Small text
      </div>
      <div
        class="tab-pane fade"
        id="nav-msprinter"
        role="tabpanel"
        aria-labelledby="nav-msprinter-tab"
        tabindex="0"
      >
      medium text
      </div>
      <div
        class="tab-pane fade"
        id="nav-xlsprinter"
        role="tabpanel"
        aria-labelledby="nav-xlsprinter-tab"
        tabindex="0"
      >
      big text
      </div>
    </div>
  </div>
</template>

<script>
export default {
  components: {},
  methods: {},
};
</script>

<style>
.car-head{
color: black !important;
font-weight: bold !important;
}
 .car-head + .active {
  color: rgb(243, 158, 0) !important;
  background: rgb(220, 220, 220) !important;
}
</style>
问题原因

你使用的CSS选择器 .car-head + .active 是相邻兄弟选择器,它仅会匹配紧接在.car-head元素之后的.active兄弟元素。但Small按钮的active类和car-head类属于同一个元素,因此该选择器对它完全无效。而Middle、Big按钮切换到active状态时,前一个兄弟元素恰好是.car-head元素,所以它们的样式能正常生效。

修复方案

将样式中的 .car-head + .active 修改为 .car-head.active(移除加号,改为交集选择器),这样就能匹配同时拥有car-head和active类的元素,无论它处于什么位置:

.car-head{
  color: black !important;
  font-weight: bold !important;
}
.car-head.active {
  color: rgb(243, 158, 0) !important;
  background: rgb(220, 220, 220) !important;
}

修改完成后,Small选项的初始状态和切换返回时都会正确高亮,三个选项的样式切换均能正常工作。

内容的提问来源于stack exchange,提问作者chief

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 06:20:24