繁体   English   中英

切换 Bootstrap 导航下拉菜单

[英]Toggling a Bootstrap nav dropdown

我已经创建了一个 Bootstrap 菜单,就像在代码片段中一样,当它展开时,页面内容的其余部分具有灯箱效果。

我在 JS 中添加了第一个函数来尝试在导航切换时隐藏/显示lightbox_container元素。

第二个功能是当他们在lightbox_container元素上单击导航时再次尝试切换导航,但这不能正常工作,因为它会将style="display:none"到下拉列表中,因此当您尝试再次展开它时它不显示。

 $("#navbarSupportedContent").on('show.bs.collapse hide.bs.collapse', function(e) { var lightbox = document.getElementById("lightbox_container"); if (e.type == 'hide') { lightbox.style.display = "none"; } else if (e.type == 'show') { lightbox.style.display = "block"; } }); $("#lightbox_container").on("click", function() { if ($("#navbarSupportedContent").hasClass("show")) { $("#navbarSupportedContent").hide(); } var lightbox = document.getElementById("lightbox_container"); lightbox.style.display = "none"; });
 #lightbox_container { position: fixed; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 40; display: none; top: 0px; left: 0px; } nav { z-index: 50; background-color: red; } .icon { border: 1px solid black; padding: 5px; }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <nav class="navbar navbar-expand-lg"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <img src="media/icons/menu.png" alt="" class="icon"> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto"> <li class="nav-item text-center dropdown"> <a class="nav-link nav dropdown-toggle products-dropdown" href="#" data-toggle="dropdown" aria-expanded="false">Products</a> <ul class="dropdown-menu"> <li class="dropdown-item d-block"> <a class="submenu-item" href="store">All Products&nbsp;›</a> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#1">Heading 1 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#2">Heading 2 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#3">Heading 3 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> </ul> </li> <li class="nav-item text-center"><a class="nav-link nav" href="blog">Blog</a></li> <li class="nav-item text-center"><a class="nav-link nav" href="about">About Us</a></li> <li class="nav-item text-center"><a class="nav-link nav" href="contact">Contact Us</a></li> </ul> </div> </nav> <div id="lightbox_container"></div>

而不是$("#navbarSupportedContent").hide(); 您应该删除show类,例如:

$("#navbarSupportedContent").removeClass("show");

看片段:

 $("#navbarSupportedContent").on('show.bs.collapse hide.bs.collapse', function(e) { var lightbox = document.getElementById("lightbox_container"); if(e.type == 'hide'){ lightbox.style.display = "none"; }else if(e.type == 'show'){ lightbox.style.display = "block"; } }); $("#lightbox_container").on("click", function(){ if($("#navbarSupportedContent").hasClass("show")){ $("#navbarSupportedContent").removeClass("show"); } var lightbox = document.getElementById("lightbox_container"); lightbox.style.display = "none"; });
 #lightbox_container{ position:fixed; width:100%; height:100%; background-color:rgba(0,0,0,0.5); z-index:40; display:none; top:0px; left:0px; } nav{ z-index:50; background-color:red; } .icon{ border:1px solid black; padding:5px; } body { height: 2000px; }
 <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <nav class="navbar navbar-expand-lg"> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <img src="media/icons/menu.png" alt="" class="icon"> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mx-auto"> <li class="nav-item text-center dropdown"> <a class="nav-link nav dropdown-toggle products-dropdown" href="#" data-toggle="dropdown" aria-expanded="false">Products</a> <ul class="dropdown-menu"> <li class="dropdown-item d-block"> <a class="submenu-item" href="store">All Products&nbsp;›</a> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#1">Heading 1 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#2">Heading 2 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> <li class="dropdown-item d-block"> <a class="submenu-item" href="store#3">Heading 3 ›</a> <ul class="dropdown-submenu"> <li class="dropdown-item d-block"><a href="1">1</a></li> <li class="dropdown-item d-block"><a href="2">2</a></li> <li class="dropdown-item d-block"><a href="3">3</a></li> <li class="dropdown-item d-block"><a href="4">4</a></li> </ul> </li> </ul> </li> <li class="nav-item text-center"><a class="nav-link nav" href="blog">Blog</a></li> <li class="nav-item text-center"><a class="nav-link nav" href="about">About Us</a></li> <li class="nav-item text-center"><a class="nav-link nav" href="contact">Contact Us</a></li> </ul> </div> </nav> <div id="lightbox_container"></div>

暂无
暂无

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

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