Bootstrap 3下拉菜单丢失
引导3仍然在RC,但我只是想实现它。 我无法弄清楚如何把一个子菜单类。 即使在CSS中没有任何课程,甚至新的文档也没有提到
在2.x中,类名称是dropdown-submenu
Bootstrap 3 RC中的dropdown-submenu
已被删除。 用Bootstrap作者Mark Otto的话来说
“子菜单现在网上没有太多的地方,尤其是移动网站,他们将被删除3.0” – https://github.com/twbs/bootstrap/pull/6342
但是,有了一点额外的CSS,你可以在3中获得相同的function。
这是一个使用3.0 RC 1的例子: http : //bootply.com/71520
这是一个使用Bootstrap 3.0.0(final)的例子: 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
@skelly解决scheme是好的,但不能在移动设备上工作,因为hover状态将不起作用。
我已经添加了一点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主题(页面顶部)find: http : //shprinkone.julienrenaux.fr/
直到今天(2014年1月9日)Bootstrap 3仍不支持子菜单下拉菜单。
我search了谷歌有关响应导航菜单,发现这是最好的,但我。
这是智能菜单 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:从背景颜色:#eeeeee到背景颜色:#c5c5c5 – 白色字体和浅色背景不好看。
.nav .open > a, .nav .open > a:hover, .nav .open > a:focus { background-color: #c5c5c5; border-color: #428bca; }
我希望这可以帮助人们和我一样!
但我希望Bootstrap尽快添加subsfunction。
评论到Skelly真正有用的解决方法 :在Bootstrap-sass 3.3.6中,utilities.scss,第19行: .pull-left
具有float:left !important
。 因此,我build议在他的CSS中使用!important:
.dropdown-submenu.pull-left { float:none !important; }
前几天我碰到这个问题。 我尝试了很多解决scheme,最终我没有真正为我工作,最终创build了bootstrap下拉代码的扩展/重写。 它是对closeMenus函数进行更改的原始代码的副本。
我认为这是一个很好的解决scheme,因为它不影响引导js的核心类。
你可以在gihub上查看: https : //github.com/djokodonev/bootstrap-multilevel-dropdown
我为下拉提供了另一个解决scheme。 希望这是有益的只需添加此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>