Продолжаем делать выезжающее боковое меню
по клику, в первой части урока была сделана HTML
-разметка, стилизованы все селекторы, теперь осталось добавить JS
динамику.
Обращаемся к библиотеке jQuery
$(".menu-icon").on("click", function(e) {
которая найдёт выезжающее меню
с классом menu
и применит метод toggleClass
к меню. Метод toggleClass
присваивает и удаляет классы у элемента.
$(".menu").toggleClass("menu_active");
При клике по иконке-бургеру слева выезжает меню
. Теперь надо сделать так, чтобы контент отодвигался, уступая место меню. Для этого создадим новый класс section_active
, который при событии будет двигать секцию с контентом на 25% вправо, как и меню.
Section_active {
transform: translateX(25%);
}
Добавим к селектору section
плавность - transition
в полсекунды. Чтобы секция не перекрывала собой иконку, то зададим ей позицию - relative
, секция должна быть на нижнем слое - z-index: 0
.
Section {
transition: 0.5s;
position: relative;
z-index: 0;
}
Вытащим меню поверх секции
Menu {
z-index: 1;
}
Вернемся к jQuery
, который найдет элемент section
, присвоим ему класс section_active
.
$("section").toggleClass("section_active");
})
Итак, мы получили полностью адаптивное меню, которое хорошо работает на всех разрешениях экрана.
Весь код + результат
Выезжающее меню справа
Для лучшего усвоения урока, давайте разберём, как сделать выезжающее меню справа по клику, отодвигая основной контент влево. Ситуация абсолютно зеркальная, изменений требуют несколько значений у меню.
Menu {
left: 75%; /* вместо 0 */
transform: translateX(100%); /* вместо -100% */
}
и одно значение у секции при клике
Section_active {
transform: translateX(-25%); /* вместо 25% */
На данный момент с помощью jQuery можно сделать на сайте всё что угодно, нужно лишь определиться надо ли это вашему сайту. Мы все стремимся сделать сайт наиболее удобный для пользователя, чтобы ему было приятно перемещаться по сайту и это было максимально легко. Меню играет большую роль когда посетитель «гуляет» по вашему сайту. И в этом уроке мы создадим выдвигающееся меню, которое может прятаться и появляться когда это необходимо пользователю.
Также интересные выдвигающиеся меню:
Пример можно увидеть здесь:
Скачать
В этом уроке мы будем использовать jQuery плагин — «jQuery.mmenu.js». Его можно скачать по ссылке — скачать
.
Как пользоваться?
HTML часть
Сперва подключим необходимые библиотеки и стили:
1
2
3
4
5
<link
type
=
"text/css"
rel
=
"stylesheet"
href
=
"css/jquery.mmenu.css"
/
>
<link
type
=
"text/css"
rel
=
"stylesheet"
href
=
"css/demo.css"
/
>
<script
type
=
"text/javascript"
src
=
"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"
>
script
>
<script
type
=
"text/javascript"
src
=
"js/jquery.mmenu.js"
>
script
>
Затем определимся со структурой меню. Для примера, чтобы показать как оно работает, я сделаю меню с вложенными элементами. Но у вас оно может быть и более простое:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
id
=
"menu"
>
<ul
>
<li
>
Страница 1</
a
>
li
>
<li
class
=
"Selected"
>
<a
href
=
"#"
>
Страница 2</
a
>
<ul
>
<li
>
Страница 10</
a
>
li
>
<li
>
<a
href
=
"#"
>
Страница 11</
a
>
<ul
>
<li
>
Страница 13</
a
>
li
>
<li
>
Страница 14</
a
>
li
>
<li
>
Страница 15</
a
>
li
>
</
ul
>
</
li
>
<li
>
Страница 12</
a
>
li
>
</
ul
>
</
li
>
<li
>
Страница 3</
a
>
li
>
<li
>
Страница 4</
a
>
li
>
<li
>
Страница 5</
a
>
li
>
<li
>
Страница 6</
a
>
li
>
<li
>
Страница 7</
a
>
li
>
<li
>
Страница 8</
a
>
li
>
<li
>
Страница 9</
a
>
li
>
</
ul
>
</
nav>
Немного выше меню вставим переключатель, чтобы пользователь мог открыть/закрыть его:
С HTML структурой закончили, сейчас переходим к стилям.
Существует масса готовых решений для создания таких панелей с помощью jQuery, отдельные плагины и модули для различных систем управления сайтом. Это всё очень даже хорошо, но можно ли, для реализации боковых слайд-панелей обойтись исключительно средствами CSS? Конечно можно! Но осторожно))), с оглядкой на то, что не все браузеры одинаково хорошо поддерживают современные свойства CSS3.
Не так давно, «выдал на-гора» решение и пример работы . Один из первых комментариев был таким: «давайте её в бок переместим...». Почему-бы и нет? Давайте)).
Сегодня расскажу и покажу на примере, как с помощью «магии CSS» можно забабахать, вполне себе функциональное, меню, по клику. Для начала, по заведённой традиции, смотрим живой пример работы панели, далее, вместе с теми кому оно надо, рассмотрим весь расклад, что, как и зачем. Предвидя вопросы, приготовил варианты расположения меню, как слева, так и справа:
HTML-Разметка Начнём разбор с переключателя панели, в качестве которого используем стандартный флажок ():
Располагаем чекбокс в верхней части документа, лучше сразу после тега
. Прописываем атрибут hidden , напрямую указывая состояние «скрытый» у данного элемента, а так же присвоим уникальный идентификатор, id="nav-toggle" например, для связки с атрибутом for тега , который мы оформим и будем использовать в виде кнопки переключения панели.В качестве обёртки содержимого боковой панели использовал тег с определённым классом class="nav" , так как Internet Explorer до версии 8.0 включительно игнорирует этот тег, вы можете использовать привычный .
Внутри базового контейнера размещаем нужное нам содержимое.
В первую очередь пропишем метку (тег
) сформированную в css в виде той самой «кнопки-гамбургер», с помощью которой установим связь с скрытым флажком checkbox . Для этого обязательно, имя атрибута for должно соответствовать id чекбокса. Пустой атрибут onclick используем для в iOS
сайт
<
ul>
<
li><
a href=
"#1"
>
Один
a>
<
li><
a href=
"#2"
>
Два
a>
<
li><
a href=
"#3"
>
Три
a>
<
li><
a href=
"#4"
>
Четыре
a>
<
li><
a href=
"#5"
>
Пять
a>
<
li><
a href=
"#6"
>
Шесть
a>
<
li><
a href=
"#7"
>
Семь
a>
ul>
Один
Два
Три
Четыре
Пять
Шесть
Семь
На этом разметка нашего бокового меню заканчивается. Правда есть ещё одна совсем необязательная фишка, это фон затемнения основного контента при включенной панели. Если оно вам надо, просто пропишите ниже меню, или в любом другом месте тела страницы, дополнительный div-контейнер с определённым классом:
<
div class
=
"mask-content"
>
div>
В демо эту фичу по-умолчанию исключил из работы, заккоментировав данный блок, если вдруг понадобится, легко найдёте и так же легко включите))). Вообще, чтобы было проще разобраться в html демо-страницы, для каждого элемента прописал подробнейшие комментарии, так что чтобы потеряться надо будет очень постараться.
Итак, все необходимые элементы на своих местах, остаётся самое главное и интересное, сформировать внешний вид, цвет, форму, и придать движухи нашему меню. Всё это мы будем делать исключительно средствами CSS. Ни каких javascript и дополнительных изображений.
CSS Расписывать каждое правило и свойство не буду, так как сделал это непосредственно в самом коде css. Стили для панелей расположенных слева или справа практически одинаковы, отличаются лишь парой-тройкой значений. В архиве с исходниками упакованы оба варианта отдельными файлами, так что выбирайте нужный, правильно подключайте к документу и всё. Здесь выкладываю «фарш css», для меню выдвигающегося с левого края страницы:
/**
* Переключаемая боковая панель навигации
* выдвигающаяся по клику слева
*/
.
nav {
/* ширна произвольная, не стесняйтесь экспериментировать */
width:
320px;
min-
width:
320px;
/* фиксируем и выставляем высоту панели на максимум */
height:
100
%;
position:
fixed;
top:
0
;
bottom:
0
;
margin:
0
;
/* сдвигаем (прячем) панель относительно левого края страницы */
left:
-
320px;
/* внутренние отступы */
padding:
15px 20px;
/* плавный переход смещения панели */
-
webkit-
transition:
left 0.
3s;
-
moz-
transition:
left 0.
3s;
transition:
left 0.
3s;
/* определяем цвет фона панели */
background:
#16a085;
/* поверх других элементов */
z-
index:
2000
;
}
/**
* Кнопка переключения панели
* тег
*/
.
nav-
toggle {
/* абсолютно позиционируем */
position:
absolute;
/* относительно левого края панели */
left:
320px;
/* отступ от верхнего края панели */
top:
1em;
/* внутренние отступы */
padding:
0.
5em;
/* определяем цвет фона переключателя
* чаще вчего в соответствии с цветом фона панели
*/
background:
inherit;
/* цвет текста */
color:
#dadada;
/* вид курсора */
cursor:
pointer;
/* размер шрифта */
font-
size:
1.
2em;
line-
height:
1
;
/* всегда поверх других элементов страницы */
z-
index:
2001
;
/* анимируем цвет текста при наведении */
-
webkit-
transition:
color .
25s ease-
in-
out;
-
moz-
transition:
color .
25s ease-
in-
out;
transition:
color .
25s ease-
in-
out;
}
/* определяем текст кнопки
* символ Unicode (TRIGRAM FOR HEAVEN)
*/
.
nav-
toggle:
after {
content:
"\2630"
;
text-
decoration:
none;
}
/* цвет текста при наведении */
.
nav-
toggle:
hover {
color:
#f4f4f4;
}
/**
* Скрытый чекбокс (флажок)
* невидим и недоступен:)
* имя селектора атрибут флажка
*/
[
id=
"nav-toggle"
]
{
position:
absolute;
display:
none;
}
/**
* изменение положения переключателя
* при просмотре на мобильных устройствах
* когда навигация раскрыта, распологаем внутри панели
*/
[
id=
"nav-toggle"
]
:
checked ~ .
nav >
.
nav-
toggle {
left:
auto;
right:
2px;
top:
1em;
}
/**
* Когда флажок установлен, открывается панель
* используем псевдокласс:checked
*/
[
id=
"nav-toggle"
]
:
checked ~ .
nav {
left:
0
;
box-
shadow:
4px 0px 20px 0px rgba(0
,
0
,
0
,
0.5
)
;
-
moz-
box-
shadow:
4px 0px 20px 0px rgba(0
,
0
,
0
,
0.5
)
;
-
webkit-
box-
shadow:
4px 0px 20px 0px rgba(0
,
0
,
0
,
0.5
)
;
overflow-
y:
auto;
}
/*
* смещение контента страницы
* на размер ширины панели,
* фишка необязательная, на любителя
*/
[
id=
"nav-toggle"
]
:
checked ~ main >
article {
-
webkit-
transform:
translateX(320px)
;
-
moz-
transform:
translateX(320px)
;
transform:
translateX(320px)
;
}
/*
* изменение символа переключателя,
* привычный крестик (MULTIPLICATION X),
* вы можете испльзовать любой другой значок
*/
[
id=
"nav-toggle"
]
:
checked ~ .
nav >
.
nav-
toggle:
after {
content:
"\2715"
;
}
/**
* профиксим баг в Android <= 4.1.2
* см: http://timpietrusky.com/advanced-checkbox-hack
*/
body {
-
webkit-
animation:
bugfix infinite 1s;
}
@-
webkit-
keyframes bugfix {
to {
padding:
0
;
}
}
/**
* позаботьтимся о средних и маленьких экранах
* мобильных устройств
*/
@
media screen and (min-
width:
320px)
{
html,
body {
margin:
0
;
overflow-
x:
hidden;
}
}
@
media screen and (max-
width:
320px)
{
html,
body {
margin:
0
;
overflow-
x:
hidden;
}
.
nav {
width:
100
%;
box-
shadow:
none
}
}
/**
* Формируем стиль заголовка (логотип) панели
*/
.
nav h2 {
width:
90
%;
padding:
0
;
margin:
10px 0
;
text-
align:
center;
text-
shadow:
rgba(255
,
255
,
255
,
.1
)
-
1px -
1px 1px,
rgba(0
,
0
,
0
,
.5
)
1px 1px 1px;
font-
size:
1.
3em;
line-
height:
1.
3em;
opacity:
0
;
transform:
scale(0.1
,
0.1
)
;
-
ms-
transform:
scale(0.1
,
0.1
)
;
-
moz-
transform:
scale(0.1
,
0.1
)
;
-
webkit-
transform:
scale(0.1
,
0.1
)
;
transform-
origin:
0
%
0
%;
-
ms-
transform-
origin:
0
%
0
%;
-
moz-
transform-
origin:
0
%
0
%;
-
webkit-
transform-
origin:
0
%
0
%;
transition:
opacity 0.
8s,
transform 0.
8s;
-
ms-
transition:
opacity 0.
8s,
-
ms-
transform 0.
8s;
-
moz-
transition:
opacity 0.
8s,
-
moz-
transform 0.
8s;
-
webkit-
transition:
opacity 0.
8s,
-
webkit-
transform 0.
8s;
}
.
nav h2 a {
color:
#dadada;
text-
decoration:
none;
text-
transform:
uppercase;
}
/*плавное появление заголовка (логотипа) при раскрытии панели */
[
id=
"nav-toggle"
]
:
checked ~ .
nav h2 {
opacity:
1
;
transform:
scale(1
,
1
)
;
-
ms-
transform:
scale(1
,
1
)
;
-
moz-
transform:
scale(1
,
1
)
;
-
webkit-
transform:
scale(1
,
1
)
;
}
/**
* формируем непосредственно само меню
* используем неупорядоченный список для пунктов меню
* прикрутим трансфомации и плавные переходы
*/
.
nav >
ul {
display:
block;
margin:
0
;
padding:
0
;
list-
style:
none;
}
.
nav >
ul >
li {
line-
height:
2.5
;
opacity:
0
;
-
webkit-
transform:
translateX(-
50
%
)
;
-
moz-
transform:
translateX(-
50
%
)
;
-
ms-
transform:
translateX(-
50
%
)
;
transform:
translateX(-
50
%
)
;
-
webkit-
transition:
opacity .
5s .
1s,
-
webkit-
transform .
5s .
1s;
-
moz-
transition:
opacity .
5s .
1s,
-
moz-
transform .
5s .
1s;
-
ms-
transition:
opacity .
5s .
1s,
-
ms-
transform .
5s .
1s;
transition:
opacity .
5s .
1s,
transform .
5s .
1s;
}
[
id=
"nav-toggle"
]
:
checked ~ .
nav >
ul >
li {
opacity:
1
;
-
webkit-
transform:
translateX(0
)
;
-
moz-
transform:
translateX(0
)
;
-
ms-
transform:
translateX(0
)
;
transform:
translateX(0
)
;
}
/* определяем интервалы появления пунктов меню */
.
nav >
ul >
li:
nth-
child(2
)
{
-
webkit-
transition:
opacity .
5s .
2s,
-
webkit-
transform .
5s .
2s;
transition:
opacity .
5s .
2s,
transform .
5s .
2s;
}
.
nav >
ul >
li:
nth-
child(3
)
{
-
webkit-
transition:
opacity .
5s .
3s,
-
webkit-
transform .
5s .
3s;
transition:
opacity .
5s .
3s,
transform .
5s .
3s;
}
.
nav >
ul >
li:
nth-
child(4
)
{
-
webkit-
transition:
opacity .
5s .
4s,
-
webkit-
transform .
5s .
4s;
transition:
opacity .
5s .
4s,
transform .
5s .
4s;
}
.
nav >
ul >
li:
nth-
child(5
)
{
-
webkit-
transition:
opacity .
5s .
5s,
-
webkit-
transform .
5s .
5s;
transition:
opacity .
5s .
5s,
transform .
5s .
5s;
}
.
nav >
ul >
li:
nth-
child(6
)
{
-
webkit-
transition:
opacity .
5s .
6s,
-
webkit-
transform .
5s .
6s;
transition:
opacity .
5s .
6s,
transform .
5s .
6s;
}
.
nav >
ul >
li:
nth-
child(7
)
{
-
webkit-
transition:
opacity .
5s .
7s,
-
webkit-
transform .
5s .
7s;
transition:
opacity .
5s .
7s,
transform .
5s .
7s;
}
/**
* оформление ссылок пунктов меню
*/
.
nav >
ul >
li >
a {
display:
inline-
block;
position:
relative;
padding:
0
;
font-
family:
"Open Sans"
,
sans-
serif;
font-
weight:
300
;
font-
size:
1.
2em;
color:
#dadada;
width:
100
%;
text-
decoration:
none;
/* плавный переход */
-
webkit-
transition:
color .
5s ease,
padding .
5s ease;
-
moz-
transition:
color .
5s ease,
padding .
5s ease;
transition:
color .
5s ease,
padding .
5s ease;
}
/**
* состояние ссылок меню при наведении
*/
.
nav >
ul >
li >
a:
hover,
.
nav >
ul >
li >
a:
focus {
color:
white;
padding-
left:
15px;
}
/**
* линия подчеркивания ссылок меню
*/
.
nav >
ul >
li >
a:
before {
content:
""
;
display:
block;
position:
absolute;
right:
0
;
bottom:
0
;
height:
1px;
width:
100
%;
-
webkit-
transition:
width 0s ease;
transition:
width 0s ease;
}
.
nav >
ul >
li >
a:
after {
content:
""
;
display:
block;
position:
absolute;
left:
0
;
bottom:
0
;
height:
1px;
width:
100
%;
background:
#3bc1a0;
-
webkit-
transition:
width .
5s ease;
transition:
width .
5s ease;
}
/**
* анимируем линию подчеркивания
* ссылок при наведении
*/
.
nav >
ul >
li >
a:
hover:
before {
width:
0
%;
background:
#3bc1a0;
-
webkit-
transition:
width .
5s ease;
transition:
width .
5s ease;
}
.
nav >
ul >
li >
a:
hover:
after {
width:
0
%;
background:
transparent;
-
webkit-
transition:
width 0s ease;
transition:
width 0s ease;
}
/* фон затемнения на основной контент
* при этом элементы блокируютя
* спорная такая фича, если оно вам надо
* просто раскомментируйте
*/
/*
.mask-content {
display: block;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.4);
visibility: hidden;
opacity: 0;
}
:checked ~ .mask-content {
visibility: visible;
opacity: 1;
-webkit-transition: opacity .5s, visibility .5s;
transition: opacity .5s, visibility .5s;
}
*/
/**
* Переключаемая боковая панель навигации
* выдвигающаяся по клику слева
*/ .nav {
/* ширна произвольная, не стесняйтесь экспериментировать */
width: 320px;
min-width: 320px;
/* фиксируем и выставляем высоту панели на максимум */
height: 100%;
position: fixed;
top: 0;
bottom: 0;
margin: 0;
/* сдвигаем (прячем) панель относительно левого края страницы */
left: -320px;
/* внутренние отступы */
padding: 15px 20px;
/* плавный переход смещения панели */
-webkit-transition: left 0.3s;
-moz-transition: left 0.3s;
transition: left 0.3s;
/* определяем цвет фона панели */
background: #16a085;
/* поверх других элементов */
z-index: 2000;
} /**
* Кнопка переключения панели
* тег
*/ .nav-toggle {
/* абсолютно позиционируем */
position: absolute;
/* относительно левого края панели */
left: 320px;
/* отступ от верхнего края панели */
top: 1em;
/* внутренние отступы */
padding: 0.5em;
/* определяем цвет фона переключателя
* чаще вчего в соответствии с цветом фона панели
*/
background: inherit;
/* цвет текста */
color: #dadada;
/* вид курсора */
cursor: pointer;
/* размер шрифта */
font-size: 1.2em;
line-height: 1;
/* всегда поверх других элементов страницы */
z-index: 2001;
/* анимируем цвет текста при наведении */
-webkit-transition: color .25s ease-in-out;
-moz-transition: color .25s ease-in-out;
transition: color .25s ease-in-out;
} /* определяем текст кнопки
* символ Unicode (TRIGRAM FOR HEAVEN)
*/ .nav-toggle:after {
content: "\2630";
text-decoration: none;
} /* цвет текста при наведении */ .nav-toggle:hover {
color: #f4f4f4;
} /**
* Скрытый чекбокс (флажок)
* невидим и недоступен:)
* имя селектора атрибут флажка
*/ {
position: absolute;
display: none;
} /**
* изменение положения переключателя
* при просмотре на мобильных устройствах
* когда навигация раскрыта, распологаем внутри панели
*/ :checked ~ .nav > .nav-toggle {
left: auto;
right: 2px;
top: 1em;
} /**
* Когда флажок установлен, открывается панель
* используем псевдокласс:checked
*/ :checked ~ .nav {
left: 0;
box-shadow:4px 0px 20px 0px rgba(0,0,0, 0.5);
-moz-box-shadow:4px 0px 20px 0px rgba(0,0,0, 0.5);
-webkit-box-shadow:4px 0px 20px 0px rgba(0,0,0, 0.5);
overflow-y: auto;
} /*
* смещение контента страницы
* на размер ширины панели,
* фишка необязательная, на любителя
*/ :checked ~ main > article {
-webkit-transform: translateX(320px);
-moz-transform: translateX(320px);
transform: translateX(320px);
} /*
* изменение символа переключателя,
* привычный крестик (MULTIPLICATION X),
* вы можете испльзовать любой другой значок
*/ :checked ~ .nav > .nav-toggle:after {
content: "\2715";
} /**
* профиксим баг в Android <= 4.1.2
* см: http://timpietrusky.com/advanced-checkbox-hack
*/ body {
-webkit-animation: bugfix infinite 1s;
} @-webkit-keyframes bugfix {
to {
padding: 0;
}
} /**
* позаботьтимся о средних и маленьких экранах
* мобильных устройств
*/ @media screen and (min-width: 320px) {
html,
body {
margin: 0;
overflow-x: hidden;
}
} @media screen and (max-width: 320px) {
html,
body {
margin: 0;
overflow-x: hidden;
}
.nav {
width: 100%;
box-shadow: none
}
} /**
* Формируем стиль заголовка (логотип) панели
*/ .nav h2 {
width: 90%;
padding: 0;
margin: 10px 0;
text-align: center;
text-shadow: rgba(255, 255, 255, .1) -1px -1px 1px, rgba(0, 0, 0, .5) 1px 1px 1px;
font-size: 1.3em;
line-height: 1.3em;
opacity: 0;
transform: scale(0.1, 0.1);
-ms-transform: scale(0.1, 0.1);
-moz-transform: scale(0.1, 0.1);
-webkit-transform: scale(0.1, 0.1);
transform-origin: 0% 0%;
-ms-transform-origin: 0% 0%;
-moz-transform-origin: 0% 0%;
-webkit-transform-origin: 0% 0%;
transition: opacity 0.8s, transform 0.8s;
-ms-transition: opacity 0.8s, -ms-transform 0.8s;
-moz-transition: opacity 0.8s, -moz-transform 0.8s;
-webkit-transition: opacity 0.8s, -webkit-transform 0.8s;
} .nav h2 a {
color: #dadada;
text-decoration: none;
text-transform: uppercase;
} /*плавное появление заголовка (логотипа) при раскрытии панели */ :checked ~ .nav h2 {
opacity: 1;
transform: scale(1, 1);
-ms-transform: scale(1, 1);
-moz-transform: scale(1, 1);
-webkit-transform: scale(1, 1);
} /**
* формируем непосредственно само меню
* используем неупорядоченный список для пунктов меню
* прикрутим трансфомации и плавные переходы
*/ .nav > ul {
display: block;
margin: 0;
padding: 0;
list-style: none;
} .nav > ul > li {
line-height: 2.5;
opacity: 0;
-webkit-transform: translateX(-50%);
-moz-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
-webkit-transition: opacity .5s .1s, -webkit-transform .5s .1s;
-moz-transition: opacity .5s .1s, -moz-transform .5s .1s;
-ms-transition: opacity .5s .1s, -ms-transform .5s .1s;
transition: opacity .5s .1s, transform .5s .1s;
} :checked ~ .nav > ul > li {
opacity: 1;
-webkit-transform: translateX(0);
-moz-transform: translateX(0);
-ms-transform: translateX(0);
transform: translateX(0);
} /* определяем интервалы появления пунктов меню */ .nav > ul > li:nth-child(2) {
-webkit-transition: opacity .5s .2s, -webkit-transform .5s .2s;
transition: opacity .5s .2s, transform .5s .2s;
} .nav > ul > li:nth-child(3) {
-webkit-transition: opacity .5s .3s, -webkit-transform .5s .3s;
transition: opacity .5s .3s, transform .5s .3s;
} .nav > ul > li:nth-child(4) {
-webkit-transition: opacity .5s .4s, -webkit-transform .5s .4s;
transition: opacity .5s .4s, transform .5s .4s;
} .nav > ul > li:nth-child(5) {
-webkit-transition: opacity .5s .5s, -webkit-transform .5s .5s;
transition: opacity .5s .5s, transform .5s .5s;
} .nav > ul > li:nth-child(6) {
-webkit-transition: opacity .5s .6s, -webkit-transform .5s .6s;
transition: opacity .5s .6s, transform .5s .6s;
} .nav > ul > li:nth-child(7) {
-webkit-transition: opacity .5s .7s, -webkit-transform .5s .7s;
transition: opacity .5s .7s, transform .5s .7s;
} /**
* оформление ссылок пунктов меню
*/ .nav > ul > li > a {
display: inline-block;
position: relative;
padding: 0;
font-family: "Open Sans", sans-serif;
font-weight: 300;
font-size: 1.2em;
color: #dadada;
width: 100%;
text-decoration: none;
/* плавный переход */
-webkit-transition: color .5s ease, padding .5s ease;
-moz-transition: color .5s ease, padding .5s ease;
transition: color .5s ease, padding .5s ease;
} /**
* состояние ссылок меню при наведении
*/ .nav > ul > li > a:hover,
.nav > ul > li > a:focus {
color: white;
padding-left: 15px;
} /**
* линия подчеркивания ссылок меню
*/ .nav > ul > li > a:before {
content: "";
display: block;
position: absolute;
right: 0;
bottom: 0;
height: 1px;
width: 100%;
-webkit-transition: width 0s ease;
transition: width 0s ease;
} .nav > ul > li > a:after {
content: "";
display: block;
position: absolute;
left: 0;
bottom: 0;
height: 1px;
width: 100%;
background: #3bc1a0;
-webkit-transition: width .5s ease;
transition: width .5s ease;
} /**
* анимируем линию подчеркивания
* ссылок при наведении
*/ .nav > ul > li > a:hover:before {
width: 0%;
background: #3bc1a0;
-webkit-transition: width .5s ease;
transition: width .5s ease;
} .nav > ul > li > a:hover:after {
width: 0%;
background: transparent;
-webkit-transition: width 0s ease;
transition: width 0s ease;
} /* фон затемнения на основной контент
* при этом элементы блокируютя
* спорная такая фича, если оно вам надо
* просто раскомментируйте
*/ /*
.mask-content {
display: block;
position: fixed;
top: 0;
left: 0;
z-index: 1000;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.4);
visibility: hidden;
opacity: 0;
} :checked ~ .mask-content {
visibility: visible;
opacity: 1;
-webkit-transition: opacity .5s, visibility .5s;
transition: opacity .5s, visibility .5s;
}
*/
Как вы понимаете, практически все значения свойств опциональные, т.е. вы легко сможете изменить и все её элементы на свой вкус и цвет, пояснения, надеюсь, помогут вам в этом. Ну, а ежели что не попрёт, или обнаружится какой-нибудь мой косяк, пишите в комментариях, обязательно разберёмся и выправим.
В завершение, хочу напомнить, что ещё не все браузеры одинаково хорошо справляются с свойствами из обоймы CSS3. Данное решение, конечно очень интересное, но всё же пока ещё больше экспериментальное. Подкорректировав под свои нужды, прежде чем намертво прикручивать к рабочему сайту, обязательно проверьте его работу в разных браузерах и на различных мобильных устройствах.
Ещё раз смотрите результат, скачивайте архив с исходниками, экспериментируйте с различными параметрами и творите, творите, творите...
В ближайшее время постараюсь рассказать и показать, как на основе данного решения, можно легко реализовать выдвижные, боковые панели, с другими, не менее важными элементами, для взаимодействия с пользователями, на борту.
Теперь у пользователей есть возможность ознакомиться с . Все они представлены в отдельной категории, которую можно найти найти на маркетплейсе TemplateMonster. С ними не должно возникнуть никаких сложностей. Просто добавьте свой уникальный контент и готово — можно запускать бизнес и привлекать все новых и новых читателей. Также очень важно помнить о том, что текст для каждого шаблона был написан вручную.
С Уважением, Андрей
В этом посте мы сделаем фиксированное боковое информационное меню. Для реализации иконок подключим шрифт .
Шаг 1. Подключаем шрифт с иконками, создаем пустой документ
Подробную инфу о работе со шрифтом FontAwesome и ссылку на сам проект вы можете найти в моем посте – .
Вот код странички с подключенными файлами:
Фиксированное боковое меню
Шаг 2. Добавляем HTML разметку фиксированного меню
Вот и сам код разметки нашего фиксированного меню:
Как вы заметили я применил тег – это элемент разметки html5, если вы используете html4, то можете заменить этот тег на обычный или вовсе его убрать, а идентификатор перенести к списку, вот так: