
bootstrap 5 中使用 `data-target` 替代 `href` 会导致首个 tab 点击时页面跳转至顶部并修改 url,正确做法是严格遵循官方规范:所有 `.nav-link` 必须使用 `href` 指向对应 tab-pane 的 id,且值需以 `#` 开头。
在 Bootstrap 5 的 Tab 组件中,href 属性不仅是语义要求,更是功能依赖的核心。官方 JavaScript 插件通过监听 a.nav-link 的 click 事件,并读取其 href 属性(如 #tab11)来定位目标 .tab-pane。若改用 data-target,Bootstrap 默认行为将失效——浏览器会将 标签视为普通锚点链接,而由于 href 缺失或为空,点击时触发默认跳转逻辑:滚动至页面顶部,并在 URL 后追加 #(即 index.html#),这正是你观察到的现象。
✅ 正确写法(修复后):
⚠️ 注意事项:
- href 值必须与目标 .tab-pane 的 id 完全一致,且必须以 # 开头(如 href="#tab11" 对应 id="tab11");
- 不要删除 data-bs-toggle="tab" —— 它是激活 Bootstrap Tab JS 行为的必要标记;
- 若页面中存在多个 Tab 组,请确保每个 id 和 href 组合全局唯一,避免冲突;
- Swiper JS 通常不影响 Tab 切换逻辑,但建议在 Tab 切换完成后再初始化 Swiper(可监听 shown.bs.tab 事件),防止 DOM 尚未渲染导致轮播失效。
? 总结:这不是 Bug,而是对 Bootstrap 5 文档规范的误用。data-target 是 Bootstrap 4 的遗留写法,Bootstrap 5 已明确弃用,仅支持 href。统一使用 href 后,所有 Tab(包括第一个)将正常切换、无跳顶、无 URL 干扰,且完全兼容 Swiper 等第三方库。










