简体   繁体   English

如何自定义引导下拉菜单?

[英]How can I customize bootstrap dropdown?

I'm a beginner in front-end development, I would like modify the behavior of bootstrap dropdown.我是前端开发的初学者,我想修改引导下拉菜单的行为。 In particular I would like to activate the second level with click and rather than hover.特别是我想通过点击而不是 hover 来激活第二级。 Also the first level items should be checkable, now if I click on it the dropdown closes.第一级项目也应该是可检查的,现在如果我点击它,下拉菜单就会关闭。

I'm using this code: https://bootsnipp.com/snippets/kM4Q我正在使用此代码: https://bootsnipp.com/snippets/kM4Q

Are you want create a dropdown or select option (look here )?您要创建下拉列表还是 select 选项(看这里)?

You have tagged this question with bootstrap-4 tag, but you have added a link with bootstrap 3 files only, so in my answer I choose to use those files.您已使用bootstrap-4标记标记了此问题,但您仅添加了带有引导程序 3 文件的链接,因此在我的回答中我选择使用这些文件。 This is a solution for Bootstrap 3 not 4 .这是 Bootstrap 3 而不是 4 的解决方案

To make that change, you could use jQuery, working with toggleClass function transforming also this CSS rule:要进行该更改,您可以使用 jQuery,与toggleClass function 一起转换此 CSS 规则:

.dropdown-submenu:hover>.dropdown-menu {
    display: block;
}

in this:在这:

.dropdown-submenu > .dropdown-menu.active {
    display: block;
}

To reset to initial situation when you close the dropdown menu, I added this function using Dropdown's event :要在关闭下拉菜单时重置为初始状态,我使用Dropdown 的事件添加了这个 function:

  $('#mydropdown').on('hidden.bs.dropdown', function () {
    $('ul', $(this)).removeClass("active");
  })

This is the code:这是代码:

 $(document).ready(function(){ $('.dropdown-submenu > a').on("click", function(e){ $(this).next('ul').toggleClass("active"); e.preventDefault(); e.stopPropagation(); }); $('#mydropdown').on('hidden.bs.dropdown', function () { $('ul', $(this)).removeClass("active"); }) });
 .dropdown-submenu { position: relative; }.dropdown-submenu>.dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px; border-radius: 0 6px 6px 6px; }.dropdown-submenu >.dropdown-menu.active { display: block; }.dropdown-submenu>a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #ccc; margin-top: 5px; margin-right: -10px; }.dropdown-submenu:hover>a:after { border-left-color: #fff; }.dropdown-submenu.pull-left { float: none; }.dropdown-submenu.pull-left>.dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; }
 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> <div class="container"> <div class="row"> <div id="mydropdown"> <div class="dropdown"> <a id="dLabel" role="button" data-toggle="dropdown" class="btn btn-primary" data-target="dropdown-menu" href="#"> Dropdown <span class="caret"></span> </a> <ul class="dropdown-menu multi-level" role="menu" aria-labelledby="dropdownMenu"> <li><a href="#">Some action</a></li> <li><a href="#">Some other action</a></li> <li class="divider"></li> <li class="dropdown-submenu"> <a tabindex="-1" href="#">Hover me for more options</a> <ul class="dropdown-menu"> <li><a tabindex="-1" href="#">Second level</a></li> <li class="dropdown-submenu"> <a href="#">Even More..</a> <ul class="dropdown-menu"> <li><a href="#">3rd level</a></li> <li><a href="#">3rd level</a></li> </ul> </li> <li><a href="#">Second level</a></li> <li><a href="#">Second level</a></li> </ul> </li> </ul> </div> </div> </div> </div>

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

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