
Всем Привет! Сегодня, в этой статье, попытаюсь Вам рассказать о таком блоке, без которого не может обойтись практически ни один сайт. Таким блоком является меню, а именно, так как раздел у нас про адаптивную верстку то соответственно создаваться будет адаптивное меню. Адаптивное меню при отображении на малых устройствах будет приобретать вертикальный удобный читаемый вид, а при отображении на больших экранах будет иметь уже привычный горизонтальный вид.
И так, для начала создадим HTML разметку, в которой будет div блок с классом container, у которого указана максимальная ширина и задано расположение по центру. Внутри блока div есть тег <nav> </nav>, в котором и будет расположено наше меню.
<!DOCTYPE html> <html lang="en"> <head>
</head> <body>
</body> </html>
HTML разметка готова, приступим к оформлению таблицы стилей CSS нашего меню.
Для эффектов в меню, при наведении на наше меню, добавляем в стили следующие строки.
/*эфекты при наведении мыши на пункты меню*/
.nav li a:hover{
color:#fff;/*меняется цвет ссылок*/
background:#ABABAB;/*меняется цвет фона под ссылкой*/
}
Теперь зададим стили для мобильного меню. Особо долго думать не будем, поэтому пропишем такие же стили, как и для меню на больших экранах.
/*стили для мобильного меню такие же, как и для общего меню*/
/*общий фон для нашего меню*/
#mobil-menu{
background: #CECECE;
}
#mobil-menu{
/*вместо display: block; ставим display: none;*/
display: none;/*скрываем мобильное меню на больших экранах*/
padding: 20px 25px;/*отступы*/
font-weight: 900;/*жирный шрифт*/
font-size: 16px;/*размер шрифта*/
color: blue;/*цвет ссылок*/
text-decoration:none;/*убираем подчеркивание ссылок*/
}
#mobil-menu:hover{
color:#fff;
background:#ABABAB;
}
С меню для больших экранов мы закончили и смело можем приступать к менюшке на малых экранах. Для этого, нам понадобится медиа-запрос, в котором укажем, что при максимальном экране 768px будет отображаться мобильное меню, но при этом будет исчезать меню для больших экранов.
/*медиа-запрос*/
@media(max-width:768px){
.nav{
display:none;/*скрываем меню для больших экранов*/
}
#mobil-menu{
display:block;/*показываем мобильное меню*/
}
}
И теперь, если мы возьмем правый нижний угол браузера и будем его сжимать до середины экрана то когда размер браузера станет 768px у нас появится надпись Мобильное меню. При нажатии на которое ничего не происходит. Для того что бы исправить это, нужно вставить Jquery код который и будет разворачивать и сворачивать наше меню. Сначала подключаем Jqueryбиблиотеку
<script src="http://Ваш сайт/js/ jquery-1.11.2.min.js"> </script>
После того как подключили библиотеку Jquery вставляем ниже написанный код.
<script type="text/javascript">
$(document).ready(function(){
var touch = $('#mobil-menu');
var menu = $('.nav');
$(touch).on('click', function(e) {
e.preventDefault();
menu.slideToggle();
});
$(window).resize(function(){
var w = $(window).width();
if(w > 767 && menu.is(':hidden')) {
menu.removeAttr('style');
}
});
});
</script>
Теперь после всех стараний при нажатии на ссылку Мобильное меню у нас выкатывается вниз меню. По виду оно у нас пока немного страшное, но сейчас мы его оформим и приведем в нужный вид. В медиа-запрос который уже создан выше, допишем следующие стили и в результате получим следующую картину.
/*медиа-запрос*/
@media (max-width:768px){
#mobil-menu{
display:block;/*показываем мобильное меню*/
}
.nav{
display:none;/*скрываем меню для больших экранов*/
margin: 0;/*обнуляем отступы*/
padding: 0;/*обнуляем отступы*/
background: #F5F5F5;
}
.nav li{
display: block;/**/
}
/*сами стили для ссылок*/
.nav li a{
/*background: #cecece;*/
color:blue;
border-top: 1px solid #bebebe;/*рамка сверху*/
border-left: 3px solid transparent;/*прозрачная рамка слева*/
}
/*для первого элемента li убираем рамку сверху*/
.nav li:first-child а{
border-top: none; /*отменяем рамку*/
}
/*стили, используемые при наведении на мобильное меню*/
.nav li a:hover{
color:#333;
background:#ebebeb;
border-left: 3px solid #515572;
}
}
После того, как вы использовали весь код предоставленный выше, у Вас должно получится все как в демо-версии. Предоставленный код выше можно модифицировать под любые вкусы и задачи, получив уже то меню, которое будет подходить под Ваш дизайн. На этом, с простым адаптивным меню завершим.


CSS