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

使用Bootstrap实现Offcanvas导航栏后,大屏下导航项不可见的原因?

问题原因

你把所有导航项都嵌套在offcanvas容器内,而Bootstrap的offcanvas组件在桌面端(≥md断点,对应屏幕宽度≥768px)默认处于隐藏状态,所以大屏下看不到导航项。

解决方案

拆分导航结构,让导航项在大屏直接显示,小屏才通过Offcanvas展开:

修改后的完整代码

<nav class="navbar navbar-expand-md navbar-light">
    <div class="container">
        <!-- 品牌Logo -->
        <div class="d-flex flex-column align-items-center">
            <a class="navbar-brand" href="/">
                <img src="pp.png" alt="..">
            </a>
        </div>

        <!-- 大屏显示的导航项(仅≥768px时可见) -->
        <div class="d-none d-md-flex ms-auto">
            <ul id="nav-list" class="navbar-nav">
                <li class="nav-item active">
                    <a class="nav-link" href="/">Home</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">About</a>
                </li>
                <li class="nav-item">
                    <a class="nav-link" href="#">Events</a>
                </li>
            </ul>
        </div>

        <!-- 小屏切换按钮(仅<768px时可见) -->
        <button class="navbar-toggler d-md-none" type="button" data-bs-toggle="offcanvas" tabindex="-1" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

        <!-- 小屏Offcanvas导航 -->
        <div class="offcanvas offcanvas-end" id="offcanvasNavbar">
            <div class="offcanvas-header">
                <button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
            </div>
            <div class="offcanvas-body">
                <ul id="nav-list-mobile" class="navbar-nav">
                    <li class="nav-item active">
                        <a class="nav-link" href="/">Home</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">About</a>
                    </li>
                    <li class="nav-item">
                        <a class="nav-link" href="#">Events</a>
                    </li>
                </ul>
            </div>
        </div>
    </div>
</nav>

关键改动说明

  • 拆分导航列表为两份:一份用d-none d-md-flex控制仅在大屏(≥768px)显示,另一份放在Offcanvas内仅在小屏显示
  • 给切换按钮添加d-md-none,确保它只在小屏出现
  • 大屏导航用ms-auto让导航项靠右对齐,和Offcanvas从右展开的视觉逻辑保持一致
  • 如果不想重复编写导航项,可以用JavaScript克隆原导航列表到Offcanvas中,但静态写法更稳定,适合多数场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:48