Как создать "выскальзывающее" меню на CSS.
Всем привет! В этой статье я покажу, как создать "выскальзывающее" меню на CSS.
На самом деле, все очень просто, поэтому я приведу код и, если вы знаете html и css, то без проблем сможете в нем разобраться. Если же вы испытываете проблемы с данными языками, рекомендую приобрести курс "Вёрстка сайта с нуля". Итак, поехали!
Код HTML:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Slide out menu</title>
<link rel="stylesheet" href="main.css">
</head>
<body>
<nav class="nav-side">
Содержание
<a href="#" class="nav-toggle"></a>
</nav>
<div class="wrapper">
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod autem beatae, sit debitis cupiditate obcaecati id sed, ea molestias, tenetur voluptates deleniti velit vel consequatur molestiae dolore quos hic perspiciatis expedita dignissimos temporibus possimus quidem sequi incidunt quibusdam. Eum dolore, deleniti repudiandae reprehenderit suscipit quos aperiam, sed. Facilis, quod recusandae?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod autem beatae, sit debitis cupiditate obcaecati id sed, ea molestias, tenetur voluptates deleniti velit vel consequatur molestiae dolore quos hic perspiciatis expedita dignissimos temporibus possimus quidem sequi incidunt quibusdam. Eum dolore, deleniti repudiandae reprehenderit suscipit quos aperiam, sed. Facilis, quod recusandae?</p>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quod autem beatae, sit debitis cupiditate obcaecati id sed, ea molestias, tenetur voluptates deleniti velit vel consequatur molestiae dolore quos hic perspiciatis expedita dignissimos temporibus possimus quidem sequi incidunt quibusdam. Eum dolore, deleniti repudiandae reprehenderit suscipit quos aperiam, sed. Facilis, quod recusandae?</p>
</div>
<script src="jquery.js"></script>
<script src="main.js"></script>
</body>
</html>
Код CSS:
body {
font: 1em "Helvetica", sans-serif;
line-height: 1.4;
font-weight: 200;
}
.wrapper {
margin-left: 50px;
}
.nav-side {
position: fixed;
left: 0;
top: 0;
height: 100%;
width: 100%;
max-width: 250px;
background: cornflowerblue;
box-sizing: border-box;
padding: 20px;
color: #fff;
margin-left: -250px;
transition: margin 200ms ease-in-out;
}
.nav-side.nav-open {
margin-left: 0;
box-shadow: 1px 1px 3px rgba(0, 0, 0, .1);
}
.nav-toggle {
position: absolute;
right: -40px;
top: 0;
width: 40px;
height: 40px;
background-color: cornflowerblue;
line-height: 40px;
text-decoration: none;
text-align: center;
border-bottom-right-radius: 3px;
box-shadow: 1px 0 3px rgba(0, 0, 0, .1);
}
.nav-toggle:before {
content: '\2192';
font-weight: 600;
color: #fff;
}
.nav-side.nav-open .nav-toggle:before {
content: '\2190';
}
Код JavaScript(JQuery):
$('.nav-side .nav-toggle').on('click', function(e) {
e.preventDefault();
$(this).parent().toggleClass('nav-open');
});
Вот и всё! Как видите, все очень просто. Большинство кода здесь - оформление самого блока. Все, что важно, это то, что мы отодвинули наш контент немного вправо, чтобы там поместилась наша кнопка со стрелочкой. Дальше мы убрали за пределы видимости наш блок меню и вытаскиваем его тогда, когда происходит клик по кнопке со стрелочкой, просто добавив нужный класс.
На этом у меня все! Спасибо за внимание!
-
- Михаил Русаков
Комментарии (4):
Было бы замечательно, если бы к статьям прикреплялись ссылки на jsfiddle для наглядности
Ответить
Будет учтено! Пример из данной статьи: http://jsfiddle.net/sxybc8LL/
Ответить
Странно, я написал этот же код на codepen.io и ничего не получилось. Потом я скопировал Ваш код (который вы на jsfiddle написали) и ничего также не сработало. Скопировал код Михаила ничего не изменилось. Не поможете? Ссылка на мой код: http://codepen.io/anon/pen/LpYvvQ
Ответить
Здравствуйте. Вы забыли подключить библиотеку JQuery. На codepen это делается в настройках(settings)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.