Bootstrap

Подменю в dropdown Bootstrap

Разработчики Bootstrap начиная с третьей версии удалили поддержку подменю в dropdown из-за того, что им никто не пользуется и на мобильных эта функция не актуальна. Ниже представлены примеры как сделать подменю.

1

Bootstrap 3

HTML код:

<div class="dropdown">
    <button class="btn btn-default dropdown-toggle" type="button" data-toggle="dropdown">
        Dropdown button <span class="caret"></span>
    </button>
    <ul class="dropdown-menu">
        <li><a href="#">1-й уровень</a></li>
        <li class="dropdown-submenu">
            <a tabindex="-1" href="#">1-й уровень</a>
            <ul class="dropdown-menu">
                <li><a href="#">2-й уровень</a></li>
                <li class="dropdown-submenu">
                    <a tabindex="-1" href="#">2-й уровень</a>
                    <ul class="dropdown-menu">
                        <li><a href="#">3-й уровень</a></li>
                        <li><a href="#">3-й уровень</a></li>
                    </ul>
                </li>
            </ul>
        </li>
    </ul>
</div>

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;
}
2

Bootstrap 4

HTML код:

<div class="dropdown">
    <button class="btn btn-secondary dropdown-toggle" type="button" data-toggle="dropdown">
        Dropdown button
    </button>
    <div class="dropdown-menu">
        <a class="dropdown-item" href="#">1-й уровень</a>
        <a class="dropdown-item submenu" href="#">1-й уровень</a>
        <div class="dropdown-menu">
            <a class="dropdown-item" href="#">2-й уровень</a>
            <a class="dropdown-item submenu" href="#">2-й уровень</a>
            <div class="dropdown-menu">
                <a class="dropdown-item" href="#">3-й уровень</a>
                <a class="dropdown-item" href="#">3-й уровень</a>
              </div>
        </div>
    </div>
</div>

CSS:

.dropdown-menu .dropdown-menu {
    top: auto;
    left: 100%;
    transform: translateY(-2rem);
}
.dropdown-item + .dropdown-menu {
    display: block;
    opacity: 0;
    transition: opacity .3s 1s;
}
.dropdown-item.submenu::after {
    content: '▸';
    margin-left: 0.5rem;
}
.dropdown-item:hover + .dropdown-menu,
.dropdown-menu:hover {
    opacity: 1;
    transition: opacity .3s .1s;
}
15 декабря 2016