29.04.2018
Длинное адаптивное меню с автоматическим пунктом ещё на 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();
Демонстрация
Нам будет приятно
Поделитесь
Комментарии