缺少引导下拉子菜单

Bootstrap 3 仍在 RC 中,但我只是在尝试实现它.我不知道如何放置子菜单类.即使在 css 中没有类,甚至新文档也没有提及它

它在 2.x 中,类名是下拉子菜单

解决方案

Bootstrap 5(2021 年更新)

添加一些 JavaScript 以防止子菜单在父下拉菜单打开时关闭.这可以通过切换 display:block...

let dropdowns = document.querySelectorAll('.dropdown-toggle')dropdowns.forEach((dd)=>{dd.addEventListener('click', function (e) {var el = this.nextElementSiblingel.style.display = el.style.display==='block'?'none':'block'})})

Bootstrap 5 多级下拉菜单 - 点击
Bootstrap 5 多级下拉菜单 - 悬停

或者,您可以将这种仅 CSS 的方法用于导航栏下拉菜单...

.dropdown-submenu {位置:相对;}.dropdown-submenu .dropdown-menu {顶部:0;左:100%;边距顶部:-1px;}.navbar-nav li:hover >ul.下拉菜单{显示:块;}

Bootstrap 5 导航栏下拉悬停子菜单(仅限 CSS)


引导程序 4(2018 年更新)

dropdown-submenu 已在 Bootstrap 3 RC 中移除.用 Bootstrap 作者 Mark Otto 的话来说......

<块引用>

"子菜单现在在网络上没有太多的位置,尤其是移动网络.它们将被 3.0" 删除.- https://github.com/twbs/bootstrap/pull/6342

但是,通过一些额外的 CSS,您可以获得相同的功能.

悬停时的导航栏子菜单:

.navbar-nav li:hover >ul.下拉菜单{显示:块;}. 下拉子菜单 {位置:相对;}.dropdown-submenu>.dropdown-menu {顶部:0;左:100%;边距顶部:-6px;}

导航栏子菜单下拉悬停
导航栏子菜单下拉悬停(右对齐)
导航栏子菜单下拉点击(右对齐)
导航栏下拉悬停(无子菜单)

<小时>

引导程序 3

这是一个使用 3.0 RC 1 的示例:http://bootply.com/71520

以下是使用 Bootstrap 3.0.0(最终版)的示例:http://bootply.com/86684

CSS

.dropdown-submenu {位置:相对;}.dropdown-submenu>.dropdown-menu {顶部:0;左:100%;边距顶部:-6px;左边距:-1px;-webkit-border-radius:0 6px 6px 6px;-moz-border-radius:0 6px 6px 6px;边框半径:0 6px 6px 6px;}.dropdown-submenu:hover>.dropdown-menu {显示:块;}.dropdown-submenu>a:after {显示:块;内容:"";浮动:对;宽度:0;高度:0;边框颜色:透明;边框样式:实心;边框宽度:5px 0 5px 5px;左边框颜色:#cccccc;边距顶部:5px;右边距:-10px;}.dropdown-submenu:hover>a:after {左边框颜色:#ffffff;}.dropdown-submenu.pull-left {浮动:无;}.dropdown-submenu.pull-left>.dropdown-menu {左:-100%;左边距:10px;-webkit-border-radius:6px 0 6px 6px;-moz-边框半径:6px 0 6px 6px;边框半径:6px 0 6px 6px;}

示例标记

附:- 导航栏中调整左侧位置的示例:http://bootply.com/92442

Bootstrap 3 is still at RC, but I was just trying to implement it. I couldn't figure out how to put a sub menu class. Even there is no class in css and even the new docs don't say anything about it

It was there in 2.x with class name as dropdown-submenu

解决方案

Bootstrap 5 (update 2021)

Add some JavaScript to prevent the submenu from closing when the parent dropdown is open. This can be done be toggle display:block...

let dropdowns = document.querySelectorAll('.dropdown-toggle')
dropdowns.forEach((dd)=>{
    dd.addEventListener('click', function (e) {
        var el = this.nextElementSibling
        el.style.display = el.style.display==='block'?'none':'block'
    })
})

Bootstrap 5 Multi-level Dropdown - click
Bootstrap 5 Multi-level Dropdown - hover

Or, you can use this CSS only method for Navbar dropdowns...

.dropdown-submenu {
  position: relative;
}

.dropdown-submenu .dropdown-menu {
  top: 0;
  left: 100%;
  margin-top: -1px;
}

.navbar-nav li:hover > ul.dropdown-menu {
    display: block;
}

Bootstrap 5 Navbar Dropdown Hover Submenus (CSS only)


Bootstrap 4 (update 2018)

The dropdown-submenu has been removed in Bootstrap 3 RC. In the words of Bootstrap author Mark Otto..

"Submenus just don't have much of a place on the web right now, especially the mobile web. They will be removed with 3.0" - https://github.com/twbs/bootstrap/pull/6342

But, with a little extra CSS you can get the same functionality.

navbar submenu on hover:

.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 submenu dropdown hover
Navbar submenu dropdown hover (right aligned)
Navbar submenu dropdown click (right aligned)
Navbar dropdown hover (no submenu)


Bootstrap 3

Here is an example that uses 3.0 RC 1: http://bootply.com/71520

Here is an example that uses 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;
}

Sample Markup

<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>

P.S. - Example in navbar that adjusts left position: http://bootply.com/92442

相关文章