Bootstrap响应式导航栏宽度<768px时消失问题求助
故障原因
代码存在3类核心错误,直接导致宽度小于768px时导航栏显示/交互逻辑完全失效:
- ID匹配错误:折叠触发按钮的
data-target属性写的是#navbarCollapse,但实际需要展开/折叠的导航容器ID是navbarSupportedContent,按钮点击后找不到对应DOM节点,完全无法触发折叠交互 - 版本类名混用:你当前用的是Bootstrap 4版本,但代码里写了大量Bootstrap 3的废弃类名:
navbar-header、navbar-toggle、icon-bar都是Bootstrap 3的导航类,Bootstrap 4根本没有这些类的默认样式,直接导致小屏状态下汉堡按钮不显示、导航容器默认隐藏无法触发 - 冗余与无效代码:nav标签同时加了
navbar-expand-lg和navbar-expand-md两个响应式展开类,属于冗余写法;全局CSS开头残留了无意义的`enter code here`字符,虽然不影响核心逻辑,但属于无效内容需要清理
小屏状态下Bootstrap会给navbar-collapse容器默认加display:none,汉堡按钮又因为类名错误、ID不匹配完全失效,除了logo之外的导航内容全被隐藏,就会出现导航栏“消失”的现象。
修复方案
HTML部分修正
直接替换原有nav块即可,Django模板语法全部保留未改动:
<header> <nav class="navbar navbar-expand-md"> <div class="container"> <a class="navbar-brand" href="/"> <img src="{% static 'images/logo2.png' %}" width="40%" /> </a> <button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="切换导航" > <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav"> <li class="nav-item"> <a href="/" class="nav-link">Acasă</a> </li> <li class="nav-item"> <a href="/about/" class="nav-link">Despre</a> </li> <li class="nav-item"> <a href="/services/" class="nav-link">Servicii</a> </li> <li class="nav-item"> <a href="/products/" class="nav-link">Produse</a> </li> <li class="nav-item"> <a href="/quote/" class="nav-link">Calculator</a> </li> {% if request.user.is_authenticated %} <li class="nav-item"> <a class="nav-link" href="{% url 'profile' %}">Profilul tau, {{request.user.username}}</a> </li> <li class="nav-item"> <a href="{% url 'logout' %}" class="nav-link" style="color: #ebce09">Logout</a> </li> {% else %} <li class="nav-item"> <a href="{% url 'login' %}" class="nav-link" style="color: #ebce09">Login</a> </li> {% endif %} </ul> </div> </div> </nav> </header>
如果需要调整导航折叠的断点,只需要修改nav标签上的展开类即可:
navbar-expand-md:768px以上显示水平导航,小于768px显示汉堡按钮navbar-expand-lg:992px以上显示水平导航,小于992px显示汉堡按钮
CSS部分修正
清理掉开头的无效残留字符,可按需补充汉堡按钮的样式适配深色导航栏,其余自定义样式无需改动:
* { box-sizing: border-box !important; } html { scroll-behavior: smooth; } body { color: #666666; font-size: 14px; font-family: "Raleway", sans-serif; line-height: 1.80857; font-weight: normal; } a { color: #1f1f1f; text-decoration: none !important; outline: none !important; transition: all 0.3s ease-in-out; } *, *::after, *::before { box-sizing: border-box; } .navbar { background-color: #12153c; } .nav-link { color: white; margin-left: 40px; font-size: 14px; font-weight: bold; } .nav-link:hover { color: #d0b608; } /* 适配深色导航栏的汉堡按钮样式,可按需调整 */ .navbar-toggler { border-color: rgba(255,255,255,0.7); } .navbar-toggler-icon { filter: invert(1); }
注意事项
- 确认页面已按正确顺序引入Bootstrap 4配套的jQuery、Popper.js依赖和Bootstrap核心JS文件,否则折叠点击交互不会生效
- 不要跨大版本混用Bootstrap的类名,不同版本的组件语法差异很大,混用很容易出现样式、交互失效的问题
内容的提问来源于stack exchange,提问作者Bitzu
相关产品推荐
相关产品推荐

