最干净可靠的做法是直接删除 navbar-expand-* 类及 .navbar-toggler 和 .navbar-collapse 结构,避免 js 干预与状态错乱;保留任一残留元素都可能导致无障碍失效、动画卡死或点击失灵。

直接删掉 navbar-expand-* 类,同时移除 .navbar-toggler 和 .navbar-collapse 结构——这是最干净、最可靠的做法,不需要 JS 干预,也不会破坏 Bootstrap 内部状态。
为什么删类比加 CSS 更安全
Bootstrap 5 的折叠行为由 navbar-expand-* 类触发:没这个类,.navbar-collapse 根本不渲染,.navbar-toggler 按钮也不会生成,JS 也不绑定任何事件。这不是“隐藏”,而是彻底不初始化。
-
navbar-expand(无后缀)等价于navbar-expand-lg,反而会让 ≤991.98px 屏幕折叠 - 用
@media强制显示.navbar-collapse会绕过 JS 状态管理,后续点击.navbar-toggler可能完全失灵 - 手动调
bootstrap.Collapse.getInstance().hide()或操作classList容易导致aria-expanded错位、动画卡死
结构里还留着 .navbar-toggler 就会出问题
即使你删了 navbar-expand-*,如果 HTML 里还保留着 <button class="navbar-toggler"></button>,它会变成一个无功能的静态按钮:没有 JS 绑定、不响应点击、还可能干扰焦点或无障碍读取。
- 必须一并删除整个
<button class="navbar-toggler"></button>元素 - 同时删除包裹导航项的
<div class="collapse navbar-collapse"> 容器 <li>把 <code>.navbar-nav直接放在.container-fluid或.navbar下,避免嵌套在已移除的 collapse 容器中 - 只对小屏生效:
@media (max-width: 767.98px) { .navbar-collapse { display: block !important; } } - 额外补一条:
.navbar-collapse.show { display: block !important; },防止 JS 添加的show类被覆盖 - 检查是否引入了 Bootstrap 4 的 JS/CSS——混用会导致
data-bs-toggle被忽略,折叠逻辑错乱
已经用了 navbar-expand-md 却想强制不折叠?别硬 hack
如果你因历史原因无法修改类名(比如 CMS 模板锁定),只能临时覆盖,那必须用 CSS 精准压制,并确认没其他 JS 干扰:
真正麻烦的不是怎么让它“不折叠”,而是删了一半结构又留着另一半:比如删了类但留着 .navbar-toggler,或者删了按钮却没动 .collapse 容器——这种半残状态最容易在移动端触发不可预测的 JS 行为。











