html - 如何自定义引导下拉菜单?
问题描述
我是前端开发的初学者,我想修改引导下拉菜单的行为。特别是我想通过点击而不是悬停来激活第二级。第一级项目也应该是可检查的,现在如果我点击它,下拉菜单就会关闭。
我正在使用此代码:https ://bootsnipp.com/snippets/kM4Q
解决方案
您已经用标签标记了这个问题bootstrap-4
,但是您添加了一个仅包含 bootstrap 3 文件的链接,所以在我的回答中我选择使用这些文件。这是 Bootstrap 3 而不是 4 的解决方案。
要进行该更改,您可以使用 jQuery,使用toggleClass函数转换此 CSS 规则:
.dropdown-submenu:hover>.dropdown-menu {
display: block;
}
在这:
.dropdown-submenu > .dropdown-menu.active {
display: block;
}
要在关闭下拉菜单时重置为初始状态,我使用Dropdown 的事件添加了此功能:
$('#mydropdown').on('hidden.bs.dropdown', function () {
$('ul', $(this)).removeClass("active");
})
这是代码:
$(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>
推荐阅读
- sql - 存储过程中的变量
- python - 创建一个包含 numpy nans 和 pandas NaTs 的系列默认全部为 pandas NaTs;这是故意的吗?
- java - 如何更新 Google Cloud Datastore 中的数组属性值
- python - 在 django 上修改模板时出现 err 500
- javascript - Javascript Observable -> 删除对象数组的项
- python-3.x - “NoneType”对象没有属性“boto_region_name”
- c - 找不到 emmake 和 emconfigure 命令 (osx)
- java - SMTP 与一封邮件
- kubernetes - 如何在没有通信的情况下在 Kubernetes 中拥有 2 个独立的命名空间
- c++ - 两个父类的构造函数顺序