- Денис Горелов
- CSS и CSS3
- Просмотров: 0
Анимированное меню с HTML и CSS3
В данном выпуске сделаем горизонтальное меню с эффектом при наведении. Подключим с шрифтовые иконки, задействуем режим наложения слоев при помощи mix-blend-mode: multiply, используем псевдоклассы :hover, и познакомимся с desplay:flax, все сделаем на чистом CSS3.
See the Pen MOPbJp by Denis (@Dwstroy) on CodePen.
Каркас меню в HTML
Скачивайте архив к себе на компьютер и разархивируйте. В нем находятся три папки, css где расположены файлы стилей, fonts папка с иконками, img в ней картинка на задний фон.
Перенесите все в свою среду разработки, в которой вы работаете. Я весь код буду писать в phpstorm. Копирую все папки и файлы в него, открываю index.html и приступим к описанию каркаса меню.
Прописываем body, тег <header>, в нем пишем div с классом .dws-menu, далее ul с классом .dws-ul,затем списки li с классом .dws-li в количестве пяти штук. В списки вложим ссылку, затем I с классом .fa и классом fa- куда пропишем название иконок, далее атрибут aria-hidden=”true”, жмем применить.
div.dws-menu>ul.dws-ul>li.dws-li*5>a>i.fa.fa-[aria-hidden=true]
Проставляем ссылкам решетку, прописываем название, а затем отбираем наши иконки и прописываем их название в разметку index.html.
Название иконок:
- home
- shopping-cart
- server
- folder-open
- newspaper-o
<header> <div class="dws-menu"> <ul class="dws-ul"> <li class="dws-li"><a href="#"><i class="fa fa-home" aria-hidden="true"></i>Главная</a></li> <li class="dws-li"><a href="#"><i class="fa fa-shopping-cart" aria-hidden="true"></i>Магазин</a></li> <li class="dws-li"><a href="#"><i class="fa fa-server" aria-hidden="true"></i>Услуги</a></li> <li class="dws-li"><a href="#"><i class="fa fa-folder-open" aria-hidden="true"></i>Портфолио</a></li> <li class="dws-li"><a href="#"><i class="fa fa-newspaper-o" aria-hidden="true"></i>Новости</a></li> </ul> </div> </header>
Оформление CSS стилей
После того как сделали разметку, приступаем к оформлению стилей. Открываем style.css в body задаем задний фон и шрифт Verdana.
body{ background-image: url("../img/escheresque_ste.png"); font-family: Verdana; }
Блоку с меню задаем фон, с верху делаем отступы в 100 пик. и ширину на весь экран.
.dws-menu{ background-color: white; margin-top: 100px; width: 100%; }
В блоки Ul выстраиваем списки горизонтально с помощью desplay:flax, убираем отступы, и центруем наши элементы при помощи justify-content:center.
ul.dws-ul{ display: flex; padding: 0; justify-content: center; }
У списков LI убираем маркер и делаем отступ со всех сторон в 10 пик.
li.dws-li { list-style: none; padding: 10px; }
У ссылок убираем подчеркивание, увеличим текст до 18 пик. и сделаем его черным цветом.
li.dws-li a{ text-decoration: none; font-size: 18px; color: #000; }
Иконку немного сдвинем правее при помощи margin-right:10px.
li.dws-li a i{ margin-right: 10px; }
Анимация при наведении
После того как сделали основное оформление приступим к анимированию при наведении.
Создадим дополнительные псевдо элементы, которые будут при наведении подчеркивать название элемента.
Опишем левую часть, отбираем ссылки и присвоим им псевдоэлемент li.dws-li a::before, пишем пустой content:’’;, шириной в 20 пик. и высоту в 3 пик. достаточно. Зададим цвет и для того что бы блок у нас появился присвоим ссылкам position: relative; , и с позиционируем абсолютно ссылкам, спустим его в самый низ, прижмем к левому краю.
li.dws-li a{ ... position: relative; } li.dws-li a::before{ ... position: absolute; top: 100%; left: 0; }
Дублируем этот блок и присваиваем ему псевдоэлемент ::after. Меняем параметр left на right, цвет выбираем другой #ff2117.
li.dws-li a::after{ content: ''; width: 20px; height: 3px; background-color: #ff2117; position: absolute; top: 100%; right: 0; }
Затем делаем анимацию при наведении. Отбираем li и задаем им background чуть темнее.
li.dws-li:hover{ background-color: #e5eae8; }
Далее анимируем полоски при наведении, что бы он двигались.
Для этого отбираем списки при наведении и добавляем к ним псевдоэлемент с шириной в 50% и задаем трансформацию по оси Х с лева на право. Это предаст ей движение.
li.dws-li:hover a:before{ width: 50%; transform: translateX(100%); }
Тоже самое повторим для псевдоэлементом ::after, только теперь движение зададим с права на лево.
li.dws-li:hover a:after{ width: 50%; transform: translateX(-100%); }
Добавляем к ссылкам плавный переход и изменим режим наложения слоев при помощи mix-blend-mode: multiply;
li.dws-li a::before{ ... transition: .5s; mix-blend-mode: multiply; } li.dws-li a::after{ ... transition: .5s; mix-blend-mode: multiply; }
Получилось довольно не плохо, давайте теперь ширину поставим в ноль и при наведении ссылке добавим красный цвет.
li.dws-li a:hover{ color: #e62117; }
Можно еще добавить отступы к ссылкам в пять пикселей и тогда высоту отступов делаем меньше в 90% будет в самый раз.
li.dws-li a{ ... padding: 5px; } li.dws-li a::before{ ... top: 90%; } li.dws-li a::after{ ... top: 90%; }
В принципе, что хотел, я вам показал, получилось довольно симпатичное меню.
Всем кому понравилось видео поделись им в социальных сетях.
Урок подготовил Горелов Денис.
Оставить комментарий:
Отзывы
Отзывов нет.
Написать отзыв
5 предыдущих видео
Contact Form | Эффект плавающего текста в фокусе на CSS и jquery Просмотров:(0)CSS эффект при наведении на картинку / Img Hover Effects Просмотров:(0)
Animation на CSS / Анимированная кнопка с пульсирующем эффектом на CSS3 Просмотров:(0)
Кнопка с анимацией для сайта на CSS Просмотров:(0)
Media queries CSS / Адаптации страниц Просмотров:(0)
Выбирай свою тему, и мы напишем когда выйдет по ней очередное видео.