Задать вопрос

Как сделать что бы меню в bootstrap в мобильной версии закрывалось при клике на пункте из меню?

Одностраничный сайт на Bootstrap. Есть стандартное меню. Фиксированное и не прокручивающееся. Ссылки видут на якори на этой же странице.
<div class="navbar navbar-default navbar-fixed-top" role="navigation">
	<div class="container container-fluid">
	<!-- Brand and toggle get grouped for better mobile display -->
	<div class="navbar-header">
		<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
		<span class="sr-only">Меню</span>
		<span class="icon-bar"></span>
		<span class="icon-bar"></span>
		<span class="icon-bar"></span>
		</button>
	<a class="navbar-brand" href="#">ЛОГО</a>		
	
	</div>
	<!-- Collect the nav links, forms, and other content for toggling -->
	<div class="collapse navbar-collapse" id="navbar-collapse">
	<ul class="nav navbar-nav">
	</ul>
	<ul class="nav navbar-nav navbar-right">
	<li><a href="#punkt1">punkt1</a></li>
	<li><a href="#punkt2">punkt2</a></li>
	<li><a href="#punkt3">punkt3</a></li>
	</ul>
	</div><!-- /.navbar-collapse -->
	</div><!-- /.container-fluid -->
</div>


В мобильной версии имеет следующие поведение:
Нажимаем на «сендвич» меню.
Открывается меню.
Нажимаем на любую ссылку.
Страница прокручивается до якоря.
НО меню не закрывается =((((

P.S.: так же скажу спасибо, если подскажете следующие:
в css задано
body {
padding-top: 50px;
}

Что бы вверх сайта не оказался под меню. Но когда мы переходим по якорю, то якорь получается под меню. Как это поправить?
  • Вопрос задан
  • 23857 просмотров
Подписаться 4 Оценить 1 комментарий
Ответ пользователя Site Maker К ответам на вопрос (5)
EXIDMen
@EXIDMen
Разработка Веб Сайтов
Для Bootstrap 4.3.1 - Рабочий вариант.
При клике на ссылку закрывает меню и убирает тёмный фон.

$('.nav-link').on('click', function () {
	$('.navbar').removeClass('open');
	$('.bg-overlay').removeClass('open1');
	$a = $($(this).attr('href'));
	$('html,body').animate({ scrollTop: $a.offset().top - 50}, 500);
	return false;
});
Ответ написан