简体   繁体   English

Bootstrap 折叠导航栏并跳转到页面的特定部分

[英]Bootstrap collapse navbar and jump to a specific part of page

I have created a navigation bar with the help of bootstrap 4, but I have a problem with collapsing the navbar and jumping to an anchor at the same time in mobile view.我在 bootstrap 4 的帮助下创建了一个导航栏,但是在移动视图中折叠导航栏并同时跳转到锚点时遇到了问题。 If I only add href="#services" , it jumps to the appropriate section of the page, but the navbar remains open.如果我只添加href="#services" ,它会跳转到页面的相应部分,但导航栏保持打开状态。

  <li class="nav-item">
    <a class="nav-link" href="#services">Services</a>
  </li>

If I only add data-toggle="collapse" to the link the collapse work also properly.如果我只将data-toggle="collapse" 添加到链接中,折叠也可以正常工作。

<li class="nav-item">
   <a class="nav-link" data-toggle="collapse">Services</a>
</li>

But If I add both of them at the same time only collapsing works, but jumping doesn't.但是如果我同时添加它们,只会折叠有效,但跳跃不会。

<li class="nav-item">
   <a class="nav-link" data-toggle="collapse" href="#services">Services</a>
</li>

Did somebody meet with the same problem?有人遇到过同样的问题吗? Do you have a workarond for this behavior?你有解决这种行为的方法吗? (I met with almost the same problem, but I did not find a working solution.) (我遇到了几乎相同的问题,但我没有找到可行的解决方案。)

You can add an onClick event handler to check if the navbar is not collapsed and collapse it.您可以添加一个onClick事件处理程序来检查导航栏是否未折叠并将其折叠。

Here, i am checking for the class show which is used to expand the navbar on mobile view.在这里,我正在检查用于在移动视图上扩展导航栏的类show

See JSFiddle .请参阅JSFiddle

Expand the navbar and click the link with the "Link" text展开导航栏并单击带有“链接”文本的链接

 $(function() { $(".nav-link:not(.dropdown-toggle)").click(function() { let nav = $(".navbar-collapse"); if (nav.hasClass("show")) { nav.removeClass("show"); } }) })
 .par { margin: 10em 0; }
 <!-- CSS --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/css/bootstrap.min.css" integrity="sha384-TX8t27EcRE3e/ihU7zmQxVncDAy5uIKz4rEkgIXeMed4M0jlfIDPvg6uqKI2xXr2" crossorigin="anonymous"> <!-- jQuery and JS bundle w/ Popper.js --> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.5.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ho+j7jyWK8fNQe+A12Hb8AhRq26LrZ/JpcUGGOn+Y7RsweNrtN/tE3MoK7ZeZDyx" crossorigin="anonymous"></script> <nav class="navbar fixed-top navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#d3">Link</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#">Something else here</a> </div> </li> <li class="nav-item"> <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a> </li> </ul> <form class="form-inline my-2 my-lg-0"> <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> </div> </nav> <div class="par" id="d1"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div> <div class="par" id="d2"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div> <div class="par" id="d3"> Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM