CSS3 Иконка меню с анимацией
Сегодня мы разберем, как создать иконки на чистом HTML и CSS3. Добавим к ним, с помощью jQuery, красивую анимацию при смене класса.
Создание иконки меню на чистом HTML и CSS
Для начала создадим иконку меню, она из себя представляет три коротких горизонтальных блока с равным расстоянием между ними.
![]()
В HTML верстке мы создадим контейнер для иконки в виде ссылки, а в ней создадим блок span, который будет отвечать за вывод самой иконки.
<a id="nav-toggle" href="#"><span></span></a>
Теперь напишем стили для иконки меню, т.к. блок span отвечает за вывод иконки, а она состоит из трех блоков, нам на помощь придут псевдо-элементы :before и :after.
body { background-color: black;}
#nav-toggle {position: relative; display: inline-block;}
#nav-toggle span { position: absolute; left: 0; top: 10px; }
#nav-toggle span,
#nav-toggle span:before,
#nav-toggle span:after {
cursor: pointer;
border-radius: 1px;
height: 5px;
width: 35px;
background: white;
position: absolute;
display: block;
content: '';
}
#nav-toggle span:before {
top: -10px;
}
#nav-toggle span:after {
bottom: -10px;
}
[button-blue url="//jsfiddle.net/webcomplex/4yjo10r7/" target="_blank" position="center"]Пример кода CSS иконки меню на jsfiddle[/button-blue]
Добавление анимации в CSS3 иконку
Теперь нам нужно сделать перевоплощение CSS3 иконки, чтобы при нажатии на нее блоки складывались в крестик.
Событие нажатия на иконку мы обработаем скриптом и после нажатия будем добавлять добавлять/удалять класс active к блоку #nav-toggle. Поможет нам в этом jQuery:
$(document).ready(function(){
$('#nav-toggle').click(function(){
$(this).toggleClass('active');
});
});
Учитывая, что иконка меню состоит из трех блоков, то центральный блок мы сделаем прозрачным сразу после нажатия на иконку, а остальные развернем под углом в 45 градусов, чтобы они собой образовали иконку в виде крестика. Для того чтобы реализовать все задуманное, нам понадобится код CSS3:
/* Добавим анимацию всех свойств для блоков нашей иконки */
#nav-toggle span, #nav-toggle span:before, #nav-toggle span:after {
transition: all 500ms ease-in-out;
}
/* Центральный блок делаем прозрачным */
#nav-toggle.active span {
background-color: transparent;
}
/* Смещаем псевдо-элементы в центр иконки (на место основного блока) */
#nav-toggle.active span:before, #nav-toggle.active span:after {
top: 0;
}
/* Наклоняем псевдо-элементы под углом 45 градусов, но в разные стороны */
#nav-toggle.active span:before {
transform: rotate(45deg);
}
#nav-toggle.active span:after {
transform: rotate(-45deg);
}
В результате у нас получается весьма забавное перевоплощение и красивые иконки с анимацией:
[button-blue url="//jsfiddle.net/webcomplex/4yjo10r7/1/" target="_blank" position="center"]Пример CSS3 Иконки меню с анимацией[/button-blue]
Просмотреть демо пример и скачать архив с исходниками вы можете по ссылкам ниже:
[button-green url="//demo.webcomplex.com.ua/15-11-2014/01/" target="_blank" position="center"]Демо-пример CSS3 иконки меню с анимацией[/button-green]
[button-brown url="//demo.webcomplex.com.ua/15-11-2014/01/demo.zip" target="_self" position="center"]Скачать исходники[/button-brown]
[alert-announce]Если у вас остались вопросы, пишите их в комментариях к посту, буду рад ответить ;)[/alert-announce]



Спасибо.
А не подскажете, как привязать выпадающее меню к событию нажатия иконки?
Давно видел такую фишку на другом сайте, а тут реализация!
Большое спасибо!!!
Пожалуйста 🙂
Good! Я правда заигрался с красной кнопкой 😀
тогда спешу напомнить что скоро 2016 год ))