Bootstrap4导航栏DropLeft位置异常问题求助
Bootstrap4导航栏中DropLeft弹出位置错误的解决方案
我帮你分析下这个问题,大概率是下拉组件的结构或者类名使用有误,Bootstrap4的下拉组件对嵌套逻辑要求比较严格,尤其是在导航栏这种flex布局容器里。
常见问题点及解决办法
类名大小写错误
Bootstrap4里左拉下拉的类名是全小写的dropleft,不是首字母大写的DropLeft,类名大小写不对的话,样式完全不会生效。嵌套结构错误(最常见)
很多人会把dropleft类加在下拉菜单(dropdown-menu)上,但正确的做法是把dropleft加在包含下拉触发器和下拉菜单的父容器上,同时这个父容器需要是导航栏的nav-item,才能和其他导航链接对齐。举个错误写法的例子(这可能就是你遇到的问题):
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <div class="navbar-nav ml-auto"> <a class="nav-link" href="#">普通链接</a> <!-- 错误:dropleft加在了菜单上,且没有用nav-item包裹 --> <a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#">下拉按钮</a> <div class="dropdown-menu dropleft"> <a class="dropdown-item" href="#">选项1</a> </div> </div> </nav>正确的结构应该是这样:
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <div class="navbar-nav ml-auto"> <a class="nav-link" href="#">普通链接</a> <!-- 正确:用nav-item.dropleft包裹触发器和菜单 --> <div class="nav-item dropleft"> <a class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> DropLeft下拉 </a> <div class="dropdown-menu"> <a class="dropdown-item" href="#">选项1</a> <a class="dropdown-item" href="#">选项2</a> </div> </div> </div> </nav>触发器属性缺失
下拉按钮必须加上data-toggle="dropdown"属性,否则无法触发下拉菜单的显示;另外加上aria-haspopup="true"和aria-expanded="false"可以增强页面的可访问性,这也是Bootstrap推荐的写法。
核心总结
只要确保这三点:
- 使用小写的
dropleft类 - 把
dropleft加在包含触发器和菜单的nav-item容器上 - 触发器带有
dropdown-toggle类和data-toggle="dropdown"属性
你的DropLeft弹出位置应该就能正常显示了~
内容的提问来源于stack exchange,提问作者Sina ghasemi zade
相关产品推荐
相关产品推荐

