Bootstrap默认不给.nav-link.active加底边框,仅通过颜色、粗细或背景表达激活态;需用.nav-item.active .nav-link选择器,重置box-sizing和padding,拆分border属性并清除其他方向边框,且CSS须在bootstrap.min.css后加载。
.nav-link.active 加 border-bottom 没反应不是写法错,是 Bootstrap 默认不给 .nav-link.active 设底边框——它只靠颜色、粗细或背景变化表达激活态。你写的 border-bottom: 2px solid #0d6efd; 很可能被以下三类干扰盖掉:
• .nav-link 默认有 box-sizing: border-box,但没预留底边框空间,导致边框“挤”进内容区,视觉上消失
• 父级 .nav-item 或 .navbar-nav 的选择器权重更高,你的规则被覆盖
• 某些版本中,.nav-link 继承了父容器的 border-style: none 或 border-bottom: 0,仅设 color 和 width 不触发渲染
关键不是加不加,而是选对元素、清掉干扰、留足空间:
.nav-item.active .nav-link(Bootstrap 4/5 均适用),不是 .nav-link.active
box-sizing: content-box; + padding-bottom: calc(0.5rem + 2px);(假设底线宽 2px)border-bottom-width: 2px; border-bottom-style: solid; border-bottom-color: #0d6efd;
border-top: none; border-left: none; border-right: none;
bootstrap.min.css 之后加载,否则规则无效同一套底线规则,在不同上下文里会失效或错位:
.navbar-dark?必须加前缀:.navbar-dark .nav-item.active .nav-link
.nav-link.dropdown-toggle 上,而不是整个 .dropdown 容器:.nav-item.dropdown.show > .nav-link.dropdown-toggle
.dropdown-menu .dropdown-item.active,和顶部导航分开处理.navbar-collapse 展开状态),需额外补充:.navbar-collapse .nav-link.active
border-bottom: 0.125rem solid #0d6efd;(比 px 更稳),并检查是否启用了 text-rendering: optimizeLegibility;
不是 CSS 写错了,是 class 没挂到对的地方:
NavLink 默认加的是 active 类(无点号),不是 .active;得用 className={({ isActive }) => isActive ? 'nav-link active' : 'nav-link'}
<router-link> 默认加 router-link-exact-active,要写 .router-link-exact-active .nav-link
scoped?CSS 不穿透,得用 ::v-deep(.nav-item.active .nav-link) 或移出 scoped 块.active 真的出现在 .nav-item 上,且 .nav-link 是它的直接子元素——中间插个 <div> 就断链.nav-link 默认 line-height: 1.5,不同字号下 baseline 浮动,border-bottom 是从 baseline 向下画的,稍不注意就“悬空”或“压字”。别依赖肉眼调值,用 rem/em + calc 配合真实设备预览。