Нажмите "ПРОДУКТЫ". Я поднимаю вверх белый div (как показано в приложении). В адаптивном режиме (мобильный телефон и планшет) я хотел бы автоматически закрыть отзывчивую навигационную панель и отображать только белую полосу.
Я старался:
$('.btn-navbar').click();
также пробовал:
$('.nav-collapse').toggle();
И это действительно работает. Однако в размере рабочего стола он также называется и делает что-то необычное с меню, где оно сокращается на секунду.
Любые идеи?
javascript
html
css
twitter-bootstrap
user1040259
источник
источник
Ответы:
У меня есть для работы с анимацией!
Меню в html:
<div id="nav-main" class="nav-collapse collapse"> <ul class="nav"> <li> <a href='#somewhere'>Somewhere</a> </li> </ul> </div>
Привязка события щелчка ко всем элементам навигации для свертывания меню (плагин свертывания Bootstrap):
$(function(){ var navMain = $("#nav-main"); navMain.on("click", "a", null, function () { navMain.collapse('hide'); }); });
ИЗМЕНИТЬ Чтобы сделать его более общим, мы можем использовать следующий фрагмент кода
$(function(){ var navMain = $(".navbar-collapse"); // avoid dependency on #id // "a:not([data-toggle])" - to avoid issues caused // when you have dropdown inside navbar navMain.on("click", "a:not([data-toggle])", null, function () { navMain.collapse('hide'); }); });
источник
a
элементы: вам просто нужно позвонить$("#nav-main").collapse('hide');
Вам не нужно добавлять дополнительный javascript к тому, что уже включено в опцию свертывания начальной загрузки. Вместо этого просто включите селекторы data-toggle и data-target в элементы списка меню так же, как вы это делаете с кнопкой переключения навигационной панели. Итак, для пункта меню "Товары" это будет выглядеть так
<li><a href="#Products" data-toggle="collapse" data-target=".navbar-collapse">Products</a></li>
Затем вам нужно будет повторить переключатели данных и целевые данные для каждого элемента меню.
РЕДАКТИРОВАТЬ!!! Чтобы исправить проблемы с переполнением и мерцание в этом исправлении, я добавляю еще код, который исправит это, и по-прежнему не имеет дополнительного javascript. Вот новый код:
<li><a href="#products" class="hidden-xs">Products</a></li> <li><a href="#products" class="visible-xs" data-toggle="collapse" data-target=".navbar-collapse">Products</a></li>
Вот он работает http://jsfiddle.net/jaketaylor/84mqazgq/
Это сделает ваши переключатели и селекторы целей специфичными для размера экрана и устранит сбои в большом меню. Если у кого-то по-прежнему возникают проблемы с глюками, сообщите мне, и я найду решение. Благодарность
РЕДАКТИРОВАТЬ : в начальной загрузке v4.1.3 я не мог использовать видимые / скрытые классы. Вместо
hidden-xs
использованияd-none d-sm-block
и вместоvisible-xs
использованияd-block d-sm-none
.источник
data-toggle
иdata-target
атрибутов каждого элемента Li вы можете вместо того, чтобы добавить его к родителюul
илиdiv
тегам.Я думаю, что вы занимаетесь инженерным делом ..
$('.navbar-collapse ul li a').click(function(){ $('.navbar-toggle:visible').click(); });
РЕДАКТИРОВАТЬ: чтобы позаботиться о подменю, убедитесь, что на их якоре переключения есть класс раскрывающегося списка.
$(function () { $('.navbar-collapse ul li a:not(.dropdown-toggle)').click(function () { $('.navbar-toggle:visible').click(); }); });
РЕДАКТИРОВАТЬ 2: добавить поддержку касания телефона.
$(function () { $('.navbar-collapse ul li a:not(.dropdown-toggle)').bind('click touchstart', function () { $('.navbar-toggle:visible').click(); }); });
источник
Мне очень понравилась идея Джейка Тейлора сделать это без дополнительного JavaScript и воспользоваться переключателем коллапса Bootstrap. Я обнаружил, что вы можете исправить проблему «мерцания», которая присутствует, когда меню не в свернутом режиме,
data-target
слегка изменив селектор, чтобы включитьin
класс. Вот так это выглядит:<li><a href="#Products" data-toggle="collapse" data-target=".navbar-collapse.in">Products</a></li>
Я не тестировал его с вложенными раскрывающимися списками / меню, поэтому YMMV.
источник
просто чтобы быть полным, в Bootstrap 4.0.0-beta использование .show сработало для меня ...
<li> <a href="#Products" data-toggle="collapse" data-target=".navbar-collapse.show">Products</a> </li>
источник
Я предполагаю, что у вас есть такая строка, определяющая область навигации на основе примеров Bootstrap и всего
<div class="nav-collapse collapse" >
Просто добавьте свойства как таковые, как на кнопке МЕНЮ
<div class="nav-collapse collapse" data-toggle="collapse" data-target=".nav-collapse">
Я тоже добавил
<body>
, работал. Не могу сказать, что я профилировал это или что-то в этом роде, но мне кажется, это удовольствие ... пока вы не нажмете случайное место в пользовательском интерфейсе, чтобы открыть меню, так что это не так хорошо.DK
источник
Это работает, но не анимируется.
$('.btn-navbar').addClass('collapsed'); $('.nav-collapse').removeClass('in').css('height', '0');
источник
В HTML я добавил класс СЧ ссылки на в теге каждой ссылки навигации.
$('.nav-link').click( function () { $('.navbar-collapse').removeClass('in'); } );
источник
это решение отлично работает как на настольных компьютерах, так и на мобильных устройствах.
<div id="navbar" class="navbar-collapse collapse" data-toggle="collapse" data-target=".navbar-collapse collapse">
источник
Чтобы описать решение user1040259, добавьте этот код в свой $ (document) .ready (function () {});
$('.nav').click( function() { $('.btn-navbar').addClass('collapsed'); $('.nav-collapse').removeClass('in').css('height', '0'); });
Как они упоминают, это не анимирует движение ... но закрывает панель навигации при выборе элемента
источник
Для тех, кто использует AngularJS и Angular UI Router с этим, вот мое решение (с использованием переключателя mollwe). Где ".navbar-main-collapse" - моя "цель данных".
Создать директиву:
module.directive('navbarMainCollapse', ['$rootScope', function ($rootScope) { return { restrict: 'C', link: function (scope, element) { //watch for state/route change (Angular UI Router specific) $rootScope.$on('$stateChangeSuccess', function () { if (!element.hasClass('collapse')) { element.collapse('hide'); } }); } }; }]);
Директива использования:
<div class="collapse navbar-collapse navbar-main-collapse"> <your menu>
источник
Это должно помочь.
Требуется bootstrap.js.
Пример => http://getbootstrap.com/javascript/#collapse
$('.nav li a').click(function() { $('#nav-main').collapse('hide'); });
Это делает то же самое, что и при добавлении атрибутов data-toggle = "collapse" и href = "yournavigationID" 'к тегам меню навигации.
источник
Я использую функцию mollwe, хотя добавил 2 улучшения:
a) Избегайте закрытия раскрывающегося списка, если ссылка, по которой была нажата ссылка, свернута (включая другие ссылки)
б) Также скройте раскрывающийся список, если вы щелкаете видимый веб-контент.
jQuery.fn.exists = function() { return this.length > 0; } $(function() { var navMain = $(".navbar-collapse"); navMain.on("click", "a", null, function() { if ($(this).attr("href") !== "#") { navMain.collapse('hide'); } }); $("#content").bind("click", function() { if ($(".navbar-collapse.navbar-ex1-collapse.in").exists()) { navMain.collapse('hide'); } }); });
источник
Не самый новый поток, но я искал решение той же проблемы и нашел одно (смесь некоторых других).
Я дал NavButton:
<type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> ...
идентификатор / идентификатор, например:
<button id="navcop" type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
Не лучшая «Идея» - но: У меня работает! Теперь вы можете проверить видимость вашей кнопки (с помощью jquery), например:
var target = $('#navcop'); if(target.is(":visible")){ $('#navcop').click(); }
(ПРИМЕЧАНИЕ. Это всего лишь фрагмент кода! Я использовал событие «onclick» на своих навигационных ссылках! (Запуск AJAX Reguest).)
Результат: Если кнопка "видима", она была "нажата" ... Итак: Никаких ошибок, если вы используете "полноэкранный вид" Bootstrap (ширина более 940 пикселей).
Привет Ральф
PS: Он отлично работает с IE9, IE10 и Firefox 25. Не проверял другие - но я не вижу проблемы :-)
источник
Это сработало для меня. Я сделал это так, когда я нажимаю кнопку меню, я добавляю или удаляю класс «in», потому что при добавлении или удалении этого класса переключатель работает по умолчанию. 'e.stopPropagation ()' - остановить анимацию по умолчанию с помощью начальной загрузки (я думаю), вы также можете использовать 'toggleClass' вместо добавления или удаления класса.
$ ('# ChangeToggle'). On ('щелчок', функция (e) {
if ($('.navbar-collapse').hasClass('in')) { $('.navbar-collapse').removeClass('in'); e.stopPropagation(); } else { $('.navbar-collapse').addClass('in'); $('.navbar-collapse').collapse(); } });
источник
Вы осторожно используете
ul.nav { display: none; }
По умолчанию это закроет панель навигации. Пожалуйста, дайте мне знать, что кто-нибудь сочтет это полезным
источник
Если, например, ваш значок с возможностью переключения виден только для очень маленьких устройств, вы можете сделать что-то вроде этого:
$('[data-toggle="offcanvas"]').click(function () { $('#side-menu').toggleClass('hidden-xs'); });
Нажатие [data-toggle = "offcanvas"] добавит .hidden-xs начальной загрузки в мое # боковое меню, которое скроет содержимое бокового меню, но снова станет видимым, если вы увеличите размер окна.
источник
если меню html
<div id="nav-main" class="nav-collapse collapse"> <ul class="nav"> <li> <a href='#somewhere'>Somewhere</a> </li> </ul> </div>
на переключателе навигации добавлен класс «in» и удален из переключателя. проверьте, открыто ли адаптивное меню, затем выполните закрытие.
$('.nav-collapse .nav a').on('click', function(){ if ( $( '.nav-collapse' ).hasClass('in') ) { $('.navbar-toggle').click(); } });
источник
Tuggle Nav Close, ответ, совместимый с браузером IE, без каких-либо ошибок консоли. Если вы используете бутстрап, используйте это
$('.nav li a').on('click', function () { if ($("#navbar").hasClass("in")) { $('.navbar-collapse.in').show(); } else { $('.navbar-collapse.in').hide(); } })
источник
$('.navbar-toggle').trigger('click');
источник
Решение Bootstrap 4 без Javascript
Добавить атрибуты
data-toggle="collapse" data-target="#navbarSupportedContent.show"
в div<div class="collapse navbar-collapse">
Убедитесь , что вы предоставляете правильный
id
инdata-target
<div className="collapse navbar-collapse" id="navbarSupportedContent" data-toggle="collapse" data-target="#navbarSupportedContent.show">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous"> <nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent" data-toggle="collapse" data-target="#navbarSupportedContent.show"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#">Something else here</a> </div> </li> <li class="nav-item"> <a class="nav-link disabled" href="#">Disabled</a> </li> </ul> <form class="form-inline my-2 my-lg-0"> <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> </div> </nav>
источник