29.04.2018

Длинное адаптивное меню с автоматическим пунктом ещё на JavaScript

Длинное адаптивное меню с автоматическим пунктом ещё на JavaScript

Часто сталкивались с ситуацией, когда длинное меню не влезает по ширине блока и приходится придумывать различные пути обхода? Сейчас разберем, как этого избежать с помощью простого скрипта, который добавляет в меню пункт «ещё» с подменю, куда попадут непоместившиеся разделы меню.

Для реализации необходимо загрузить скрипт keengo.moreNav.js и подключить его после jQuery. Далее оформляем меню в соответствии со стилями вашего сайта и присваиваем тегу <ul> уникальный id или class, который будет использоваться в js. Затем просто подключаем скрипт к вашему меню таким скриптом: $('#more-nav').moreNav();

Меню будет работать при загрузке и при изменении размеров экрана, то есть пункты будут автоматически переформировываться в подменю «ещё» в зависимости от ширины меню. Попробуйте изменить размер окна браузера, чтобы увидеть, как изменится меню.

<ul id="more-nav">
	<li>
		<a href="#">Телевизоры</a>
	</li>
	<li>
		<a href="#">Аудио-видео</a>
	</li>
	<li>
		<a href="#">Компьютеры</a>
	</li>
	<li>
		<a href="#">Смартфоны</a>
	</li>
	<li>
		<a href="#">Планшеты</a>
	</li>
	<li>
		<a href="#">Фото и видео</a>
	</li>
	<li>
		<a href="#">Техника для кухни</a>
	</li>
	<li>
		<a href="#">Бытовая техника</a>
	</li>
	<li>
		<a href="#">Красота и здоровье</a>
	</li>
	<li>
		<a href="#">Для автомобилей</a>
	</li>
	<li>
		<a href="#">Игры</a>
	</li>
	<li>
		<a href="#">Аксессуары</a>
	</li>
</ul>
#more-nav {
	display: block;
	position: relative;
	z-index: 500;
	list-style: none;
	margin: 0;
	padding: 0;
	border-bottom: #EEE solid 1px;
}
#more-nav:after {
	content: '';
	display: table;
	clear: both;
}
#more-nav > li {
	display: block;
	position: relative;
	float: left;
}
#more-nav > li a {
	display: block;
	white-space: nowrap;
	padding: 10px 25px;
	color: #333;
	font-weight: 700;
	text-decoration: none;
}
#more-nav > li:hover > a,
#more-nav > li a:hover {
	background: #ffffff;
}
#more-nav > li > ul {
	display: block;
	position: absolute;
	background: #FFF;
	top: 100%;
	right: 0;
	list-style: none;
	margin: 0;
	padding: 0;
	border: #EEE solid 1px;
	border-top: none;
	margin-top: -1px;
	opacity: 0;
	visibility: hidden;
}
#more-nav > li:hover > ul {
	opacity: 1;
	visibility: visible;
}
$('#more-nav').moreNav();

Демонстрация

Нам будет приятно

Поделитесь

Комментарии

Загрузка комментариев...