Верстаем бургер кнопку
Добавляем в html кнопку с классом burger
<button class="burger"></button>
Далее идем в CSS и задаем размер нашей кнопке и сбрасываем стандартные стили фона и границ. Верхнюю и нижнюю линии мы создадим с помощью псевдоэлементов ::after
и ::before
, задав им ширину 100%, высоту 4px и расположив их абсолютно относительно кнопки снизу и сверху, а третью зададим как тень от одной из линий и отпустим на середину кнопки.
.burger { position: relative; border: none; background: transparent; width: 40px; height: 26px; } .burger::before, .burger::after { content: ''; left: 0; position: absolute; display: block; width: 100%; height: 4px; border-radius: 10px; background: #000; } .burger::before { top: 0; box-shadow: 0 11px 0 #000; } .burger::after { bottom: 0; }
В итоге мы получаем такую бургер кнопку
Анимируем бургер кнопку на JS
Добавим кнопке анимацию при клике, кнопка будет превращаться в крестик и обратно. Для этого нам понадобится использовать немного javaScript. Получим кнопку и при клике на нее будем добавлять и удалять ей класс active.
const burger = document.querySelector('.burger'); burger.addEventListener('click', () => { burger.classList.toggle('active'); });
А в сss мы добавим стили для активной кнопки, развернем линии на 45 градусов и скроем среднюю линию, чтобы получится крест. Для плавной анимации добавим свойство transition и пропишем в нем свойства которые мы анимируем. Первым значением в transition идет анимируемое свойство, вторым время за которое происходит изменение и третьим задержка. Чтобы анимировать несколько свойств, все необходимые свойства и насторойки к ним, добавляются через запятую.
.burger::before { transition: box-shadow .3s .15s, top .3s .15s, transform .3s; } .burger::after { transition: bottom .3s .15s, transform .3s; } .burger.active::before { top: 11px; transform: rotate(45deg); box-shadow: 0 6px 0 rgba(0,0,0,0); transition: box-shadow .15s, top .3s, transform .3s .15s; } .burger.active::after { bottom: 11px; transform: rotate(-45deg); transition: bottom .3s, transform .3s .15s; }
И получаем готовую бургер кнопку
See the Pen Hamburger button css + js by Max (@max00110) on CodePen.
Анимируем бургер кнопку без JS
Анимировать можно и без javaScript. Для этого заменим button
на label
и добавим ему атрибут for
со значением burger-checkbox
. Также перед label
добавим input
с типом checkbox
, индинтификатором и классом burger-checkbox
. Теперь при нажатии на label будет срабатывать чекбокс. Сам чекбокс мы скроем и при помощи псевдокласса :checked
и комбинатора +
будем изменять стиль активной кнопки, когда чекбокс выбран. Следовательно, в css заменяем селектор .burger.active
на .burger-checkbox:checked + .burger
.
See the Pen Hamburger button only css by Max (@max00110) on CodePen.
Как сделать открывающееся бургер меню без javaScript, с использованием данной кнопки читайте в нашей статье – Бургер меню на HTML и CSS
Источник:
https://html-css.blog/css/burger-knopka-na-css/
Оставьте первый комментарий