Бургер меню код css

Как сделать гамбургер (бургер) меню — готовый код и подробное объяснение

Достаточно популярный запрос, как сделать гамбургер меню. Я покажу вам вариант с использованием html, css и js. Это адаптивный вариант, то есть он будет работать и на мобильных устройствах.

Начнем с того, что создадим html разметку. Пропишем header и внутрь добавим нашу «иконку» гамбургера (это просто три элемента span):

А теперь добавим наше меню, которое будет появляться, когда пользователь нажмет на гамбургер:

Добавим стили для header и для кнопки:

header < display: flex; justify-content: flex-end; >.menu-btn < width: 30px; height: 30px; position: relative; z-index:2; overflow: hidden; >.menu-btn span < width: 30px; height: 2px; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); background-color: #222222; transition: all 0.5s; >.menu-btn span:nth-of-type(2) < top: calc(50% - 5px); >.menu-btn span:nth-of-type(3)

Сейчас у нас все это выглядит вот так:

Меню выглядит не очень. Давайте это исправим, добавив стили:

/* Меню, которое будет появляться */ .menu < position: fixed; top: 0; left: 0; width: 100%; height: 100%; padding: 15px; background: #FFEFBA; transform: translateX(-100%); transition: transform 0.5s; >.menu.active < transform: translateX(0); >.menu li

Логика в следующем: сейчас мы скрыли меню за пределы экрана с помощью свойства transform и значения translateX(-100%);

Но при клике на гамбургер мы будем добавлять меню класс .active — и он будем возвращать меню в видимую область экрана с помощью transform: translateX(0);

Давайте реализуем на JS добавление класса к меню (.menu) по клику на гамбургер (.menu-btn):

let menuBtn = document.querySelector('.menu-btn'); let menu = document.querySelector('.menu'); menuBtn.addEventListener('click', function()< menu.classList.toggle('active'); >)

Мы используем toggle — чтобы удалять класс по клику, если он есть у элемента. Таким образом при клике на гамбургер у нас появляется и исчезает меню.

Если хотите, чтобы меню появлялось справа, то у класса menu измените следующее свойство:

transform: translateX(100%);

По сути, у нас готово гамбургер меню. Но давайте еще сделаем так, чтобы при клике на гамбургер, наша «иконка» превращалась в крестик.

Для этого мы будем использовать тот же фокус с добавлением класса. Для начала добавим css:

/* Меняем гамбургер иконку, когда меню открыто */ .menu-btn.active span:nth-of-type(1) < display: none; >.menu-btn.active span:nth-of-type(2) < top: 50%; transform: translate(-50%, 0%) rotate(45deg); >.menu-btn.active span:nth-of-type(3)

А теперь в js коде сделаем переключатель, как мы ранее делали для меню. Только теперь сделаем для «иконки». Получится вот так:

let menuBtn = document.querySelector('.menu-btn'); let menu = document.querySelector('.menu'); menuBtn.addEventListener('click', function()< menuBtn.classList.toggle('active'); menu.classList.toggle('active'); >)

Вот вы и поняли принцип, по которому можно сделать гамбургер меню. Вариантов реализации множество, присылайте в комментариях свои решения.

Прикрепляю видео с нашего YouTube канала, можете посмотреть это все в видеоформате:

Источник

Готовим бургер меню на CSS, HTML и JQuery

Приправим этот день приятным вкусом гамбургера! Как известно, верстальщики — это особый тип гурманов, который увлеченно прячет вкусняшки в разных частях сверстанной страницы, например, в меню. Вы только посмотрите, как постарался верстальщик, упаковавший такой длинный список пунктов меню в маленький трехэтажный гамбургер. Еще и добавил анимационный спецэффект: начинка из гамбургера высыпается с небольшой задержкой, так что нижний и верхний слои бургера успевают наклониться и образовать крестик!

Текущий HTML-файл:

Текущий CSS-файл:

* < margin: 0; padding: 0; border: 0; box-sizing: border-box; >body < background: #fff; color: #313131; min-height: 100vh; font-family: 'Roboto', Helvetica; font-size: 18px; >a < color: #242e31; text-decoration: none; font-weight: 600; >header < position: fixed; width: 100%; top: 0; left: 0; z-index: 20; height:80px; background: #fff; box-shadow: 0 2px 5px 0 rgba(0,0,0,.1); display: flex; padding: 5px 0; align-items: center; justify-content: space-between; >.container < width: 100%; max-width: 1180px; margin: 0 auto; padding: 10px; position: relative; >.content-wrapper < width: 100%; >.header__nav < position: absolute; right: 36px; display: block; >.header__menu < display: flex; position: relative; z-index: 2; >.header__menu li < list-style: none; margin: 0px 0px 0px 36px; font-size: 16px; text-transform: uppercase; text-decoration: none; >.content-wrapper

Шапочка выглядит пустовато: я не стала размещать логотип и другие элементы, чтобы не отвлекаться от работы с меню. Несмотря на это, при сужении экрана пункты меню наползают друг на друга и шапка превращается в хаос. Поэтому нужно для экранов мобильных устройств, то есть для таких гаджетов, у которых ширина менее 768px:

1. Приготовить аппетитный бургер и расположить его в верхней левой части экрана. Бургер должен выглядеть как на изображении ниже:

2. Создать скрипт, реагирующий на клик мыши по иконке бургера. При клике левой кнопки мыши, средний слой должен плавно исчезать, а верхний и нижний слои — менять углы наклона и образовывать крестик.

3. Создать CSS-стили для вертикального меню, которое будет открываться при клике по иконке бургера.

4. Создать анимацию плавного выдвижения вертикального меню из левого края страницы.

В итоге должно получиться адаптивное меню, которое разворачивается в горизонтальную плашку на широких экранах и сворачивается в приятный бургер на экранах мобильных устройств.

Инструменты: HTML, CSS, JQuery

1. Рисуем бургер меню в левом верхнем углу шапки

В соотсветствии с html-структурой, для бургер-меню у нас заготовлен блок с классом «menu-burger__header»:

Над этим блоком мы и поколдуем!

Так как потребность в бургере порождена желанием адаптировать меню к мобильным устройствам, то css-стили для узких экранов шириной менее 768px мы будем записывать внутри медиазапроса: @media(max-width: 767px)

Откроем css-файл и в самом конце файла разместим медиазапрос: «@media(max-width: 767px)< >» Между скобками медиазапроса расположим стили для класса «menu-burger__header»:

.menu-burger__header span, .menu-burger__header:after, .menu-burger__header:before < height: 3px; width: 100%; position: absolute; background: #515758; margin: 0 auto; >.menu-burger__header span < top: 21px; >.menu-burger__header:after, .menu-burger__header:before < content: ''; >.menu-burger__header:after < bottom: 5px; >.menu-burger__header:before

После этого можно сохранить стили и обновить страницу — бургер создан!

Дополнительно для мобильной версии я уменьшила высоту шапки и немного сдвинула вверх контентную часть:

В результате меню приобрело следующий вид:

Хм.. Бургер выглядит хорошо, однако, сползшее вниз меню мешает получить дозу эстетического удовольствия и требует хотя бы временно скрыть горизонтальное меню с виду. Для этого я внесу дополнение в css стили для узких экранов:

Теперь я довольна результатом и предлагаю двигаться дальше:

2. Пишем скрипт анимации бургера при клике мыши.

Пришло время подключить тяжелую артиллерию, а именно: JQuery! Для этого перед закрывающим тегом в html-файле я добавила строку:

А ниже подключим файл script.js, который расположим в папке «js»:

Библиотека подключена, js-файл создан, пришло время покодить в файле «menu.js»! Первым делом посредством метода click() привяжем обработчик событий click к нажатию на иконку бургера. Если нажатие произошло, то добавим к блоку с меню дополнительный класс ‘open-menu’:

Осталось лишь прописать изменения в стилях. Я предлагаю наколдовать плавное исчезновение среднего слоя бургера и одновременные повороты верхнего и нижнего слоев до образования крестика:

.menu-burger__header.open-menu span < opacity:0; transition: 0.5s; >.menu-burger__header.open-menu:before < transform: rotate(38deg); top: 16px; transition: 0.4s; >.menu-burger__header.open-menu:after

Анимация бургера удалась на славу! А это значит, что мы переходим к следующему пункту ТЗ:

3. Создаем CSS-стили для вертикального меню, которое будет открываться при клике по иконке бургера.

В конце 1 пункта статьи мы приняли временную меру — скрыли горизонтальное меню свойством display: none

Давайте вернем горизонтальное меню в область видимости, заменив значение «none» на «block»:

А чтобы горизонтальное меню не перекрывало бургер, превратим его в вертикальное с помощью дополнительных свойств. Добавленные на этом этапе строки подсвечены:

Зададим свойства селекторам «.header__menu» и «.header__menu li» для узких экранов:

.header__menu < display: block; >.header__menu li

Вертикальное меню готово! Осталось сделать анимацию так, чтобы меню выдвигалось слева при нажатии на иконку бургера!

4. Создаем анимацию плавного выдвижения вертикального меню из левого края страницы.

Анимацию будем создавать посредством свойства transition, примененного к селектору .header__nav. Сначала мы зададим блоку с классом «header__nav» смещение влево на 100% и пропишем свойство transition со значением «all 0.4s ease» для того, чтобы изменение свойств блока с меню происходило в течение 0.4s:

Само изменение свойств блока будет происходить при наступлении события — клика по левой кнопки мыши. В CSS это событие будет проявляться добавлением класса «open-menu» в блок с меню рядом с классом «header__nav». Сразу запишем для селектора .header__nav.open-menu меняющееся свойство:

Осталось привязать добавление класса «open-menu» к щелчку по левой кнопки мыши. Для этого вернемся в созданный ранее js файл и добавим строку «$(‘.header__nav’).toggleClass(‘open-menu’):»

Меню готово и работает так, как и планировалось:

С техническим заданием мы справились! Однако, я предлагаю внести небольшие коррективы в наш код для улучшения юзабилити меню.

Зачистим шероховатости: добавим прокрутку в меню и уберем скроллинг основного текста на странице.

Для того, чтобы меню прокручивалось в случае, если оно не вмещается на экран мобильного устройства, добавим в селектор «.header__menu» свойство «overflow: auto»:

Теперь меню в случае расширения будет легко скроллиться на кротких экранах. Однако, вместе с меню будет прокручиваться и основной текст страницы, расположенный под меню. Это может привести к неожиданным эффектам. Чтобы такой ситуации не произошло, заблокируем тело страницы на весь период, пока будет открыто меню. Для этого добавим телу страницы body класс при открытом меню: $(‘body’).toggleClass(‘fixed-page’);

А в CSS-свойствах добавим блокировку страницы для блока с классом «fixed-page»:

Ура! Все отлично работает и радует глаз верстальщика. А если и остались какие-то шероховатости, то всегда можно взять в эти руки напильник и допилить основу до нужного состояния! Всем удачи, и вкусных вам бургеров!

Финальный код

Архив с итоговыми файлами можно скачать по ссылке: burger-menu.zip. Для того, чтобы проверить работоспособность кода, нужно разархивировать скачанную папку и открыть файл menu.html в браузере. При уменьшении ширины браузера стандартное меню будет трансформироваться в бургер-меню!

Источник

Как создать гамбургер-меню на сайте

Узнайте, как создать гамбургер-меню на сайте с помощью HTML, CSS и JavaScript, делая навигацию удобнее для мобильных устройств.

Smartphone screen with an open hamburger menu

Гамбургер-меню – это распространенный элемент веб-дизайна, представляющий собой иконку с тремя горизонтальными полосками. При нажатии на эту иконку открывается меню навигации, что особенно полезно на мобильных устройствах с ограниченным пространством экрана. В этой статье мы рассмотрим, как создать гамбургер-меню на сайте с использованием HTML, CSS и JavaScript.

Создание разметки

Для начала создадим HTML-разметку для нашего гамбургер-меню. Нам понадобится контейнер для меню и сама иконка гамбургера.

Стилизация

Теперь применим стили к нашему меню с помощью CSS. Сначала зададим стили для иконки гамбургера, а затем – для меню навигации.

body < margin: 0; font-family: Arial, sans-serif; >nav < display: flex; justify-content: space-between; align-items: center; background-color: #333; padding: 0 1rem; >.hamburger-menu < display: none; >.hamburger < width: 30px; height: 3px; background-color: white; margin: 5px; >.nav-links < list-style: none; display: flex; margin: 0; padding: 0; >.nav-links li a < color: white; text-decoration: none; padding: 1rem; >/* Медиазапрос для мобильных устройств */ @media (max-width: 768px) < .hamburger-menu < display: block; >.nav-links < display: none; >>

Добавление функциональности

И, наконец, добавим функциональность нашему гамбургер-меню с помощью JavaScript. Создадим функцию, которая будет открывать и закрывать меню при клике на иконку гамбургера.

document.querySelector(".hamburger-menu").addEventListener("click", () => < document.querySelector(".nav-links").classList.toggle("show-menu"); >);

Теперь у нас есть гамбургер-меню, которое открывается и закрывается при нажатии на иконку. 🎉

Не забудьте подключить ваш CSS и JavaScript файлы к HTML файлу.

Вот таким образом можно создать гамбургер-меню на сайте с использованием базовых технологий веб-разработки. Этот пример может быть отправной точкой для дальнейшей кастомизации и улучшения меню в соответствии с требованиями вашего проекта.

Если вы хотите углубить свои знания в веб-разработке, рекомендую ознакомиться с

Источник

Читайте также:  Opencv python баланс белого
Оцените статью