项目中aria-expanded失效,导航栏下拉菜单无法展开怎么解决?
下拉菜单无法展开的排查与解决步骤
1. 补全下拉菜单的内容容器
你的代码仅包含了下拉触发按钮,但缺少实际的下拉菜单内容容器——Bootstrap需要同级存在.dropdown-menu类的元素才能正常渲染下拉面板。示例补充如下:
<ul class="list-unstyled topnav-menu float-end mb-0"> <li class="dropdown notification-list topbar-dropdown"> <a class="nav-link dropdown-toggle nav-user me-0 waves-effect waves-light" data-bs-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false"> <img src="@obj.ImgUrl" alt="user-image" class="rounded-circle"> <span class="pro-user-name ms-1"> @obj.Users.FirstName @obj.Users.LastName <i class="mdi mdi-chevron-down"></i> </span> </a> <!-- 新增下拉菜单内容容器 --> <div class="dropdown-menu dropdown-menu-end"> <a class="dropdown-item" href="#">个人中心</a> <a class="dropdown-item" href="#">退出登录</a> </div> </li> </ul>
同时修正ARIA属性:aria-haspopup应设为true,符合弹出式组件的规范要求。
2. 确认Bootstrap依赖正确引入
Bootstrap 5的下拉组件依赖Popper.js和Bootstrap自身JS文件,必须按顺序引入:
<!-- 先引入Popper.js --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.11.8/dist/umd/popper.min.js"></script> <!-- 再引入Bootstrap JS --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.min.js"></script>
如果用本地文件,需检查路径是否正确,避免加载失败。
3. 验证父元素类名与DOM结构
确保触发按钮的父元素<li>保留.dropdown类(你的代码已包含,但需注意后续修改不要误删),这是Bootstrap识别下拉组件容器的核心标识。
4. 排查JS冲突与报错
打开浏览器开发者工具(F12)的Console面板,查看是否有JavaScript报错:
- 若存在其他脚本覆盖Bootstrap下拉方法,需调整脚本加载顺序
- 若使用ASP.NET等框架,需确保DOM渲染完成后再初始化Bootstrap组件
内容的提问来源于stack exchange,提问作者Shreyash Shreyash
相关产品推荐
相关产品推荐

