Делаем из горизонтального меню – мобильное
Чтобы быстро сделать сворачивающимся горизонтальное меню можно конечно подключить тяжелый фреймворк Bootstrap, а можно пойти путем описанном на этой странице.
Итак мы имеем меню:
<ul class="mainmenu menu" id="hidd"> <li class="item-101"><a href="#">Главная</a></li> <li class="item-162"><a href="#">Услуги</a></li> <li class="item-130"><a href="#">О нас</a></li> <li class="item-131"><a href="#">Стоимость</a></li> <li class="item-132"><a href="#">Отзывы</a></li> <li class="item-133"><a href="#">Туризм</a></li> <li class="item-163"><a href="#">Фотогалерея</a></li> <li class="item-134"><a href="#">Контакты</a></li> </ul>
Для начала убедимся что у нас viewport в настроен правильно:
<meta name="viewport" content="width=device-width, initial-scale=1">
Затем добьемся адаптивности меню с помощью @media запроса:
@media (max-width: 640px) .mainmenu li { float: none; / width: 100%; }
Тут мы указали браузеру, чтобы при ширине экрана максимум 640 пикселей у всех пунктов меню убиралось обтекание и ширина была 100%.
Убедимся что горизонтальное меню превращается в вертикальное – т.е. блоки располагаются один под другим, посмотрим на телефоне как отобразилось меню, если все ок, идем дальше.
Теперь нам нужно добавить кнопку, которая будет появляться на мобильных устройствах и открывать по нажатию наше меню, для этого добавим саму кнопку выше блока меню
<a href="#" class="open_menu">Меню</a>
Добавим в файле стилей CSS описания кнопке, например так:
.open_menu {display:block;width: 96%; box-sizing: border-box; background: #64b7ac; margin: 0 auto; padding: 14px 10px; text-align: center; color: #fff; font-size: 20px;} .open_menu:before {content:"☰";margin-right: 10px;}
Само меню по умолчанию должно быть скрытым для мобильных устройств, поэтому скроем его с помощью CSS так:
#hidd {display:none;}
Теперь сделаем так чтобы на широких экранах кнопка исчезала, а меню появлялось, добавим @media запрос и укажем в нем два стиля…
@media (min-width:640px) { .open_menu {display:none !important} /* на экранах более 640 пикс кнопку скроем */ #hidd {display:block !important} /* а наше меню, у которого #hidd наоборот покажем */ }
Далее нам нужно добавить обработчик клика кнопки, пишем скрипт:
<script> jQuery( ".open_menu" ).click(function() { jQuery( this ).toggleClass( "opened" ); // по нажатию добавляем кнопке дополнительный класс "opened" jQuery("#hidd").slideToggle( "slow" ); // разворачиваем наше меню }); </script>
Мы использовали toggle поэтому при нажатии повторно на кнопку меню скроется, а класс .opened исчезнет. Этот класс мы можем использовать для стилизации как хотим.
Готово! Увидеть кнопку в работе можно тут
Весь код:
<a href="#" class="open_menu">Меню</a> <ul class="mainmenu menu" id="hidd"> <li class="item-101"><a href="#">Главная</a></li> <li class="item-162"><a href="#">Услуги</a></li> <li class="item-130"><a href="#">О нас</a></li> <li class="item-131"><a href="#">Стоимость</a></li> <li class="item-132"><a href="#">Отзывы</a></li> <li class="item-133"><a href="#">Туризм</a></li> <li class="item-163"><a href="#">Фотогалерея</a></li> <li class="item-134"><a href="#">Контакты</a></li> </ul> <style> .mainmenu li { float: left; display: block; list-style: none; text-align: center; height: 40px; } .open_menu {display:block;width: 96%; box-sizing: border-box; background: #64b7ac; margin: 0 auto; padding: 14px 10px; text-align: center; color: #fff; font-size: 20px;} .open_menu:before {content:"☰";margin-right: 10px;} #hidd {display:none;} @media (min-width:480px) { .open_menu {display:none !important} #hidd {display:block !important} } </style> <script> jQuery( ".open_menu" ).click(function() { jQuery( this ).toggleClass( "opened" ); jQuery("#hidd").slideToggle( "slow" ); }); </script>