Bootstrap导航点击切换器展开时如何将nav-items定位到右侧?
问题原因
你当前使用ms-auto不生效的核心原因是导航栏的外层容器container-fluid额外添加了justify-content-between类,这个类会让导航栏的三个直接子元素(品牌标识、折叠按钮、导航菜单容器)按两端对齐排布,导致导航菜单容器navbar-collapse没有占满剩余宽度,ms-auto的自动左margin没有生效的布局基础。
另外还存在两个不影响当前布局但需要修正的细节错误:
- 列表项的类名写错,应为
nav-item而非navbar-item - 折叠按钮的
aria-controls属性值和导航容器的id不匹配,会导致移动端折叠功能异常 - 折叠按钮上额外加了多余的
collapse类,会影响按钮默认样式
解决方案
按以下步骤修改代码即可实现导航项右对齐:
- 移除
container-fluid上的justify-content-between类 - 你可以选择两种方式实现右对齐,选其中一种即可:
- 方式一:保留
ul上的ms-auto类(推荐,符合Bootstrap原生导航栏写法) - 方式二:给
navbar-collapse添加justify-content-end类
- 方式一:保留
修正后的完整代码
<html lang="en"> <head> <!-- Required meta tags --> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-F3w7mX95PdgyTmZZMECAngseQB83DfGTowi0iMjiWaeVhAn4FJkqJByhZMI3AhiU" crossorigin="anonymous"> <link rel="stylesheet" href="style.css"> <title>Portfolio</title> </head> <body> <header> <nav class="navbar navbar-expand-lg fixed-top navbar-light"> <div class="container-fluid mx-5 px-4"> <a class="navbar-brand" href="#">HELLO</a> <button class="navbar-toggler collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="navbar-collapse" id="navbarCollapse"> <ul class="navbar-nav ms-auto"> <li class="nav-item"> <a class="nav-link active " aria-current="page" href="#">ABOUT</a> </li> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">PROJECT</a> </li> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">RESUME</a> </li> <li class="nav-item"> <a class="nav-link active" aria-current="page" href="#">CONTACT</a> </li> </ul> </div> </div> </nav> <!-- <img class="img-fluid" src="img\heading-image.jpg" alt=""> --> </header> <!-- Optional JavaScript --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.bundle.min.js" integrity="sha384-/bQdsTh/da6pkI1MST/rWKFNjaCP5gBSY4sEBT38Q/9RBh9AH40zEOg7Hlq2THRZ" crossorigin="anonymous"></script> <script src="script.js"></script> </body> </html>
内容的提问来源于stack exchange,提问作者mianuar
相关产品推荐
相关产品推荐

