Bootstrap 3仍在RC中,但是我只是在尝试实现它。我不知道如何放置一个子菜单类。甚至CSS中没有类,甚至新文档也没有说什么
它在2.x中存在,类名称为dropdown-submenu
Bootstrap 3仍在RC中,但是我只是在尝试实现它。我不知道如何放置一个子菜单类。甚至CSS中没有类,甚至新文档也没有说什么
它在2.x中存在,类名称为dropdown-submenu
Answers:
更新于2018
该dropdown-submenu
自举3 RC已被删除。用Bootstrap作者Mark Otto的话来说。
“子菜单现在在网络上没有什么位置,特别是在移动网络上。它们将在3.0中删除。” -https://github.com/twbs/bootstrap/pull/6342
但是,仅需一点额外的CSS,您就能获得相同的功能。
Bootstrap 4(悬停时的导航栏子菜单)
.navbar-nav li:hover > ul.dropdown-menu {
display: block;
}
.dropdown-submenu {
position:relative;
}
.dropdown-submenu>.dropdown-menu {
top:0;
left:100%;
margin-top:-6px;
}
Navbar子菜单下拉悬停
Navbar子菜单下拉悬停(右对齐)
Navbar子菜单下拉单击(右对齐)
Navbar下拉悬停(无子菜单)
引导程序3
这是使用3.0 RC 1的示例:http : //bootply.com/71520
这是使用Bootstrap 3.0.0(最终版)的示例:http : //bootply.com/86684
的CSS
.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 6px;
border-radius:0 6px 6px 6px;
}
.dropdown-submenu:hover>.dropdown-menu {
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:#cccccc;
margin-top:5px;
margin-right:-10px;
}
.dropdown-submenu:hover>a:after {
border-left-color:#ffffff;
}
.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;
}
样本标记
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav">
<li class="menu-item dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Drop Down<b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="menu-item dropdown dropdown-submenu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 1</a>
<ul class="dropdown-menu">
<li class="menu-item ">
<a href="#">Link 1</a>
</li>
<li class="menu-item dropdown dropdown-submenu">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Level 2</a>
<ul class="dropdown-menu">
<li>
<a href="#">Link 3</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
</div>
PS-导航栏上的示例可调整左侧位置:http : //bootply.com/92442
.dropdown-submenu:hover {background: #e2e1e1;}
@skelly解决方案很好,但由于悬停状态不起作用,因此在移动设备上不起作用。
我添加了一些JS来恢复BS 2.3.2的行为。
PS:它将与您到达的CSS一起使用:http://bootply.com/71520,尽管您可以评论以下部分:
CSS:
/*.dropdown-submenu:hover>.dropdown-menu{display:block;}*/
JS:
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
// Avoid following the href location when clicking
event.preventDefault();
// Avoid having the menu to close when clicking
event.stopPropagation();
// If a menu is already open we close it
$('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
// opening the one you clicked on
$(this).parent().addClass('open');
});
结果可以在我的WordPress主题(页面顶部)上找到:http : //shprinkone.julienrenaux.fr/
$(this).closest(".dropdown-submenu").toggleClass("open");
,这将打开/关闭链接菜单项。为了将鼠标悬停在桌面上,有必要检查浏览器的视口宽度,并且每个站点的视口宽度会有所不同。
直到今天(2014年1月9日),Bootstrap 3仍不支持子菜单下拉菜单。
我在Google上搜索了响应式导航菜单,发现这是我最好的菜单。
这是智能菜单 http://www.smartmenus.org/
我希望这是任何想要导航菜单和多级子菜单的人的出路。
更新2015-02-17智能菜单现已完全支持子菜单的Bootstrap元素样式。有关更多信息,请访问智能菜单网站。
Shprink的代码对我的帮助最大,但是为了避免出现下拉菜单,我将其更新为:
JS:
$('ul.dropdown-menu [data-toggle=dropdown]').on('click', function(event) {
// Avoid following the href location when clicking
event.preventDefault();
// Avoid having the menu to close when clicking
event.stopPropagation();
// If a menu is already open we close it
$('ul.dropdown-menu [data-toggle=dropdown]').parent().removeClass('open');
// opening the one you clicked on
$(this).parent().addClass('open');
var menu = $(this).parent().find("ul");
var menupos = $(menu).offset();
if (menupos.left + menu.width() > $(window).width()) {
var newpos = -$(menu).width();
menu.css({ left: newpos });
} else {
var newpos = $(this).parent().width();
menu.css({ left: newpos });
}
});
CSS:从background-color:#eeeeee到background-color:#c5c5c5-白色字体和浅色背景看起来不太好。
.nav .open > a,
.nav .open > a:hover,
.nav .open > a:focus {
background-color: #c5c5c5;
border-color: #428bca;
}
我希望这能对我有所帮助!
但我希望Bootstrap尽快添加subs功能。
评论Skelly真正有用的解决方法:在Bootstrap-sass 3.3.6中,utilities.scss,第19行:.pull-left
has float:left !important
。从那以后,我建议在他的CSS中也使用!important:
.dropdown-submenu.pull-left {
float:none !important;
}
我几天前碰到了这个问题。我尝试了许多解决方案,但最终没有一个真正有用的解决方案,最终我创建了Bootstrap下拉代码的扩展/覆盖。它是原始代码的副本,但对closeMenus函数进行了更改。
我认为这是一个很好的解决方案,因为它不会影响bootstrap js的核心类。
您可以在gihub上查看它:https : //github.com/djokodonev/bootstrap-multilevel-dropdown
我为下拉菜单提出了另一种解决方案。希望对您有所帮助。只需添加此js脚本
<script type="text/javascript"> jQuery("document").ready(function() {
jQuery("ul.dropdown-menu > .dropdown.parent").click(function(e) {
e.preventDefault();
e.stopPropagation();
if (jQuery(this).hasClass('open2'))
jQuery(this).removeClass('open2');
else {
jQuery(this).addClass('open2');
}
});
}); < /script>
<style type="text/css">.open2{display:block; position:relative;}</style>