Простое боковое слайд-меню на jQuery
Karina | 23.07.2015
В этом уроке мы покажем, как создать простое и современное навигационное меню, используя CSS и несколько строк jQuery. Мы используем jQuery, чтобы боковое слайд-меню плавно открывалось с левой стороны веб-страницы.
Вы можете посмотреть демо, а также загрузить архив с файлами для более детального изучения и работы.
Демо Загрузить архив RAR (690 kB)
1. HTML
Для начала займемся разметкой HTML, где помимо основных элементов страницы будут находиться два элемента <script>, перед закрывающим тегом </body>. Первый скрипт подключает библиотеку jQuery, а второй — наш файл menu.js, который мы скоро заполним кодом.
<body>
<div class="menu">
<!-- Иконка меню -->
<div class="icon-close">
<img src="images/close-btn.png">
</div>
<!-- Меню -->
<ul>
<li><a href="#">About</a></li>
<li><a href="#">Blog</a></li>
<li><a href="#">Help</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
<!-- Main body -->
<div class="background">
<div class="icon-menu">
<img src="images/menu-ham-icon.png">
Menu
</div>
</div>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="menu.js"></script>
</body>
2. CSS
На втором этапе создадим файл style.css и запишем в него стили для страницы и бокового меню:
/* Body */
body {
left: 0;
margin: 0;
overflow: hidden;
position: relative;
}
/* Menu */
.menu {
background: #555 url('images/menu-bg.jpg') repeat left top;
left: -285px; /* прячем меню */
height: 100%;
position: fixed;
width: 285px;
}
/* Basic CSS */
.background {
background-image: url('images/chicago-night.jpg');
height: 100%;
width: 100%;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
}
.menu ul {
border-top: 1px solid #555;
list-style: none;
margin: 0;
padding: 0;
}
.menu li {
border-bottom: 1px solid #555;
font-family: 'Open Sans', sans-serif;
line-height: 45px;
padding-bottom: 3px;
padding-left: 20px;
padding-top: 3px;
}
.menu li:hover {
cursor: pointer;
background-color: #555;
}
.menu a {
color: #fff;
font-size: 15px;
text-decoration: none;
text-transform: uppercase;
}
.icon-close {
cursor: pointer;
padding-left: 10px;
padding-top: 10px;
padding-bottom: 6px;
}
.icon-menu {
color: #fff;
cursor: pointer;
font-family: 'Open Sans', sans-serif;
font-size: 20px;
padding-bottom: 25px;
padding-left: 25px;
padding-top: 25px;
text-decoration: none;
text-transform: uppercase;
}
.icon-menu img {
margin-right: 5px;
}
3. jQuery
Третий этап — маленький несложный код jQuery, с помощью которого мы оживим наше меню, чтобы его можно было открыть и закрыть. Каждая строчка кода сопровождается пояснениями.
/* Открытие меню */
var main = function() { //главная функция
$('.icon-menu').click(function() { /* выбираем класс icon-menu и
добавляем метод click с функцией, вызываемой при клике */
$('.menu').animate({ //выбираем класс menu и метод animate
left: '0px' /* теперь при клике по иконке, меню, скрытое за
левой границей на 285px, изменит свое положение на 0px и станет видимым */
}, 200); //скорость движения меню в мс
$('body').animate({ //выбираем тег body и метод animate
left: '285px' /* чтобы всё содержимое также сдвигалось вправо
при открытии меню, установим ему положение 285px */
}, 200); //скорость движения меню в мс
});
/* Закрытие меню */
$('.icon-close').click(function() { //выбираем класс icon-close и метод click
$('.menu').animate({ //выбираем класс menu и метод animate
left: '-285px' /* при клике на крестик меню вернется назад в свое
положение и скроется */
}, 200); //скорость движения меню в мс
$('body').animate({ //выбираем тег body и метод animate
left: '0px' //а содержимое страницы снова вернется в положение 0px
}, 200); //скорость движения меню в мс
});
};
$(document).ready(main); /* как только страница полностью загрузится, будет
вызвана функция main, отвечающая за работу меню */
Вот и всё — удобное боковое выезжающее меню на jQuery готово!
-
Огромное спасибо, среди всей кучи дерьма я рад, что нашёл такой отличный материал!
-
Спасибо!
-
просто и гениально.
Забрал себе. -
Спасибо!
Вопрос, как сделать, чтоб открытое меню закрывалось по клику на оставшейся видимой части страницы? -
Спасибо, легенький скрипт, то что нада. Мб подскажете как сделать прокрутку вниз внутри этого блока? там position:fixed; Я в него вставил аккардион при раскрытии все улетает за нижнюю область(
-
Пардон. Уже сам нашел)) Может кому будет полезно. Заработало вот так:
.menu {
position: fixed;
top:0;
bottom:0;
overflow-y:scroll;
overflow-x:hidden;
}
-
-
Спасибо за урок!
А как можно сделать, чтоб меню не уезжала в сторону, а оставалось на месте? -
А есть ли способ сделать боковое слайд-меню, чтобы оно выползало просто при наведении курсора мыши на самый край окна? (скажем, полоса в пикселей 10 с левой стороны экрана)
Комментарии