Меню начальной загрузки выпадающего подменю отсутствует



Bootstrap 3 все еще находится в RC, но я просто пытался его реализовать. Я не мог понять, как поставить класс подменю. Даже в css нет класса, и даже новые документы ничего не говорят об этом



Это было в 2.x с именем класса как выпадающее меню

703   7  

7 ответов:

Обновлено 2018

The dropdown-submenu был удален в Bootstrap 3 RC. По словам автора Бутстрэпа Марка Отто..

"подменю просто нет места в интернете прямо сейчас, особенно в мобильном интернете. Они будут удалены с 3.0" - https://github.com/twbs/bootstrap/pull/6342

но, с небольшим дополнительным CSS вы можете получить то же самое функциональность.

Bootstrap 4 (подменю navbar при наведении курсора)

.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 выпадающее меню hover (без подменю)


Bootstrap 3

вот пример, который использует 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>

С. П. - пример в панели навигации, которая регулирует левое положение: http://bootply.com/92442

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

до сегодняшнего дня (9 января 2014 года) Bootstrap 3 по-прежнему не поддерживает выпадающее меню подменю.

Я искал Google о отзывчивом меню навигации и обнаружил, что это лучшее, что я, хотя.

Это смарт-меню http://www.smartmenus.org/

Я надеюсь, что это выход для тех, кто хочет меню навигации с многоуровневым подменю.

обновление 2015-02-17 смарт-меню теперь полностью поддерживают стиль элемента Bootstrap для подменю. Для получения дополнительной информации, пожалуйста, посмотрите на веб-сайте смарт-меню.

код Шпринка помог мне больше всего, но чтобы избежать выпадающего меню, чтобы выйти за пределы экрана, я обновил его до:

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 добавит функцию subs обратно как можно скорее.

комментарий Скелли действительно полезное решение: в Bootstrap-sass 3.3.6, утилиты.scss, строка 19:.pull-left и float:left !important. С тех пор, я рекомендую использовать !важно и в его CSS:

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

Comments

    Ничего не найдено.