Создание меню на чистом CSS
Владислав Калачев
Опубликовано Автор: Владислав Калачев
9 323
Доброго времени суток, друзья. Частой задачей при разработки сайта или приложения является создание меню с целью лучшей навигации. Есть несколько путей решения этой задачи: либо с помощью CSS, либо с использованием JS. В данной статье я хочу показать вам путь решения этой задачи по средствам только одного CSS. Приступим.
Видео по теме:
Создание HTML макетаДля начала нам потребуется создать саму верстку по средам HTML тегов. Давайте же сделаем это.
<nav> <div> <label for="menuToggle">Меню</label> <input type="checkbox"> <ul> <li><a href="#">Главная</a></li> <li><a href="#">Страница1</a></li> <li><a href="#">Страница2</a></li> <li><a href="#">Страница3</a></li> <li><a href="#">О нас</a></li> </ul> </div> </nav> <section> <div> Lorem ipsum dolor sit amet, consectetur adipisicing elit.Facilis autem consequatur eum facere neque. Tenetur laboriosam repellendus neque fuga, velit, totam, est, aspernatur sunt sapiente earum quo beatae. Fuga, officia. </div> </section>
html{ height: 100%; font-size: 18px; } .menu{ list-style-type: none; margin: 0; padding: 0; } nav{ background: #4c3167; } .menu li{ float: left; } .menu li a { display: inline-block; padding: 10px 15px; color: #fff; text-decoration: none; } section{ padding-top: 10px; } .wrapper{ max-width: 1024px; padding: 0 30px; margin: 0 auto; } .b-content{ height: 100%; background: #c1aaff; color: #000; } .menuToggle{ padding: 10px 15px; cursor: pointer; color: #fff; display: none; } body{ height: 100%; } nav input{ display: none; } nav label{ padding: 10px 15px; color: #fff; display: none; }
@media ( max-width: 670px) { nav label{ display: block; } #menuToggle:checked + . menu{ display: block; position: absolute; background: #4c3167; width: 100%; margin-left: -30px; padding-left: 28px; } .menu li{ float: none; } .menu{ display: none; } }
Это все что нужно для для создания меню на чистом CSS. Давайте поподробнее рассмотрим как это все работает. У нас есть обычный список в котором мы храним меню. Мы добавляем checkbox с помощью которого мы будем хранить состояния и тег <label> который будет у нас в роли кнопки меню на мобильных устройствах.
<label for="menuToggle">Меню</label> <input type="checkbox">
Скрываем сам checkbox и оставляем смену состояния только тегу <label>.
Теперь добавляем стили которые будут показывать блок меню если мы кликае по тегу <label> и скрывать его по второму клику.
#menuToggle:checked + .menu{ display: block; position: absolute; background: #4c3167; width: 100%; margin-left: -30px; padding-left: 28px; }
Данная статья подошла к концу. Тут я оставил для вас исходник на GitHub. Сегодня мы рассмотрели пример того как на нативном CSS c использование checkbox можно создать полноценно адаптивное меню для мобильных устройств. C вами был Corvax. Да новых встреч!
Подписывайтесь на наш канал в Telegram и на YouTube для получения самой последней и актуальной информации.
РубрикиFront-end, CSS, junior, ВерсткаВам может понравиться
Настроить дизайн меню — Поддержка
Тема определяет внешний вид меню на сайте. В этом руководстве будут рассмотрены способы изменения дизайна меню.
В этом руководстве
Изменение цветов меню
💡
Если в теме используется редактор сайта (т. е. присутствует раздел меню Внешний вид → Редактор), то цвет меню можно изменить в настройках блока «Навигация».
Во многих темах можно управлять цветом текста меню и фоном. Чтобы посмотреть варианты настройки цветов, выполните следующие действия.
- Перейдите в раздел Внешний вид → Настроить.
- Нажмите Цвета и фоновые изображения, где будут отображаться круги. Каждый круг определяет цвет элементов сайта, например цвет ссылки и цвет фона.
- Все темы отличаются друг от друга. Нажмите каждый круг и посмотрите, какие элементы меняют цвет. Выберите новый цвет — в окне предварительного просмотра справа будет показан новый цвет на сайте.
- Если результат вам подходит, нажмите Сохранить изменения, чтобы применить новые цвета на сайте.
Если эти опции не позволяют получить нужный цвет, измените цвета меню с помощью кода CSS — отдельной опции в тарифных планах WordPress.com Premium, Business и Commerce и устаревшем плане Pro. Дополнительные сведения о поддержке CSS см. здесь.
Перемещение меню
Если вы хотите изменить расположение меню, используйте следующие возможности.
- Найдите тему, которая отображает меню на нужной вам позиции. Расположение меню — один из основных факторов, влияющих на выбор темы. Выберите тему, в которой меню отображается в оптимальном месте. Узнайте больше о замене тем.
- Для размещения меню на любой странице или в области виджета используйте блок «Навигация».
- Проверьте области для меню в своей теме. Каждая тема содержит хотя бы одну область для меню, но некоторые темы поддерживают несколько таких областей.
- Используйте тему Редактор сайта, которая позволит вам полностью управлять размещением таких элементов, как меню навигации, логотип и т. д.
Возможно, вы не сможете переместить меню на другую позицию. Но мы, как правило, не предоставляем код CSS для этого из-за высокой сложности и риска появления проблем при отображении.
Меню на мобильном устройстве
На экранах ПК меню обычно отображается в виде списка текстовых ссылок, расположенных в одну строку. На экранах меньшего размера (планшеты и смартфоны) места гораздо меньше, и разместить все текстовые ссылки так, чтобы их было легко нажать, не удаётся.
Вместо этого во многих случаях элементы меню свёртываются в отдельную кнопку, которая выглядит примерно так.
Такое меню часто называется «гамбургером», так как три горизонтальных линии напоминают гамбургер.
Обычно меню для настольных компьютеров невозможно отобразить на экранах мобильных устройств и наоборот, да это и не рекомендуется. Пользователи уже привыкли к меню такого типа на мобильных устройствах, так как это лучший способ навигации по сайту.
Другие изменения оформления
Если этих инструментов недостаточно, чтобы внести на сайт изменение, обратитесь к инженеру поддержки и обсудите это с ним. Мы можем порекомендовать изменить тему или использовать CSS (только на тарифных планах WordPress Premium, Business и Commerce и устаревшем плане Pro), если предложенный вами дизайн можно реализовать.
Классы CSS
Эта функция доступна для сайтов с тарифными планами WordPress.com Premium, Business и eCommerce. Если на вашем сайте действует один из устаревших тарифных планов, этот раздел доступен для плана Pro.
Классы CSS — это расширенное свойство меню, с помощью которого можно применить класс CSS к отдельным элементам меню.
Чтобы включить опцию классов CSS, выполните следующие действия.
- Перейдите в раздел Внешний вид → Настроить → Меню.
- Нажмите значок ⚙️ (шестерёнка), чтобы открыть расширенные настройки меню.
- Убедитесь, что установлен флажок «Классы CSS», как показано на изображении справа.
В элементах меню появится новое поле, в котором можно указать класс CSS, как показано здесь.
В примере выше вы можете задать стиль элемента меню, используя селектор .twitter
в коде CSS.
Далее: Расширенные настройки меню.
Ваша оценка:
Создание меню на HTML и CSS
- Вертикальное меню
- Горизонтальное меню
- Выпадающее меню
Если ваш веб-сайт не ограничен одной веб-страницей, вам следует рассмотреть возможность добавления панели навигации (меню). Раздел меню веб-сайта разработан, чтобы помочь посетителю ориентироваться на сайте. Любое меню представляет собой список ссылок, ведущих на внутренние страницы сайта.
Вертикальное меню
Первым шагом в создании вертикального меню является создание ненумерованного списка. Нам также нужно иметь возможность идентифицировать список, поэтому мы добавим к нему атрибут id
с идентификатором navbar
. Каждый
элемент нашего списка будет содержать одну ссылку:
<ул>
Наша следующая задача — сбросить стили списка, установленные по умолчанию. Нам нужно убрать внешние и внутренние отступы возле списка и маркеры у элементов списка. Затем установите желаемую ширину:
#навигационная панель { маржа: 0; заполнение: 0; тип стиля списка: нет; ширина: 100 пикселей; }
Теперь пришло время стилизовать сами ссылки. Мы добавим к ним цвет фона, изменим параметры текста: цвет, размер и насыщенность шрифта, уберем подчеркивание, добавим небольшие отступы и переопределим отображение
элемент из строчного в блочный. Кроме того, к элементам списка добавлены левая и нижняя рамки.
Наиболее важной частью наших изменений является переопределение встроенных элементов в блочные. Теперь наши ссылки занимают все свободное место элементов списка, то есть для перехода по ссылке нам больше не нужно наводить курсор точно на текст.
#навигационная панель { цвет фона: #949494; цвет: #fff; отступ: 5px; текстовое оформление: нет; вес шрифта: полужирный; граница слева: 5px сплошная #33ADFF; дисплей: блок; } #навбар ли { граница слева: 10px сплошная #666; нижняя граница: 1px сплошная #666; }
Мы объединили весь описанный выше код в один пример, теперь, нажав на кнопку Try it
, вы можете перейти на страницу примера и посмотреть результат:
<голова> <мета-кодировка="utf-8">Название страницы <стиль> #навигационная панель { маржа: 0; заполнение: 0; тип стиля списка: нет; ширина: 100 пикселей; } #навбар ли { граница слева: 10px сплошная #666; нижняя граница: 1px сплошная #666; } #навигационная панель { цвет фона: #949494; цвет: #fff; отступ: 5px; текстовое оформление: нет; вес шрифта: полужирный; граница слева: 5px сплошная #33ADFF; дисплей: блок; } стиль> голова> <тело> <ул>
При наведении курсора мыши на пункт меню его внешний вид может меняться, привлекая внимание пользователя. Вы можете создать этот эффект, используя псевдокласс :hover
.
Вернемся к предыдущему примеру с вертикальным меню и добавим в таблицу стилей следующее правило:
#navbar a: hover { цвет фона: #666; граница слева: 5px сплошная #3333FF; }Попробуйте »
Горизонтальное меню
В предыдущем примере мы рассмотрели вертикальную панель навигации, которая чаще всего находится на сайтах слева или справа от области основного контента. Однако меню с навигационными ссылками также часто располагается горизонтально вверху веб-страницы.
Вы можете создать горизонтальное меню, стилизовав обычный список. Свойство display
для элементов
должно быть установлено на inline
, чтобы элементы списка размещались один за другим.
Чтобы расположить элементы меню горизонтально, сначала создайте неупорядоченный список со ссылками:
<ул>
Напишем для нашего списка пару правил, которые сбрасывают стиль, используемый для списков по умолчанию, и переопределяют элементы списка с блочных на строчные:
#навигационная панель { маржа: 0; заполнение: 0; тип стиля списка: нет; } #navbar li { display: inline; }Попробуйте »
Теперь нам нужно только определить стиль оформления для нашего горизонтального меню:
#навигационная панель { маржа: 0; заполнение: 0; тип стиля списка: нет; граница: 2px сплошная #0066FF; радиус границы: 20px 5px; ширина: 550 пикселей; выравнивание текста: по центру; цвет фона: #33ADFF; } #навигационная панель { цвет: #fff; отступ: 5px 10px; текстовое оформление: нет; вес шрифта: полужирный; отображение: встроенный блок; ширина: 100 пикселей; } #navbar a: hover { радиус границы: 20px 5px; цвет фона: #0066FF; }Попробуйте »
Раскрывающееся меню
Меню, которое мы создадим, будет иметь основные навигационные ссылки, расположенные на горизонтальной панели навигации, и подпункты, которые будут отображаться только после наведения курсора мыши на пункт меню, чтобы к которым относятся эти подпункты.
Сначала нам нужно создать HTML-структуру нашего меню. Основные навигационные ссылки разместим в неупорядоченном списке:
<ул>
Мы поместим подпункты в отдельный список, заключив его в элемент
, который содержит родительскую ссылку на подпункты. Теперь у нас есть четкая структура нашей будущей панели навигации:
. <ул>
Теперь давайте начнем писать код CSS. Для начала нужно скрыть список подпунктов с помощью отображения
, чтобы они не появлялись на веб-странице постоянно. Для отображения подпунктов нам нужно преобразовать список в блочный элемент при наведении курсора на элемент : нет;
:
#navbar ul { display: none; } #navbar li:hover ul { display: block; }
Удалить отступы и маркеры по умолчанию из обоих списков. Элементы списка с навигационными ссылками сделать плавающими, образуя горизонтальное меню, а для пунктов списка, содержащих подпункты, установить
, чтобы они отображались друг под другом. с плавающей запятой: нет;
#навбар, #навбар ул { маржа: 0; заполнение: 0; тип стиля списка: нет; } #navbar li { float: left; } #navbar ul li { float: none; }
Затем нам нужно убедиться, что наше выпадающее подменю не перемещает содержимое под панелью навигации вниз. Для этого мы установим элементы списка в
и список, содержащий position: relative;
и добавляем свойство позиция: абсолютная;
top
со значением 100%
, чтобы абсолютно позиционированное подменю отображалось точно под ссылкой.
#навбар ул { дисплей: нет; положение: абсолютное; верх: 100%; } #навбар ли { плыть налево; положение: родственник; } #navbar {высота: 30px; }Попробуй »
Специально добавлена высота для родительского списка, так как браузеры не учитывают содержимое элемента как плавающее содержимое, то без добавления высоты наш список будет игнорироваться браузером и содержимое следующего за ним список будет обтекать наше меню.
Теперь нам нужно стилизовать оба наших списка, и выпадающее меню будет готово:
#навбар ул { дисплей: нет; цвет фона: #f90; положение: абсолютное; верх: 100%; } #navbar li:hover ul { display: block; } #навбар, #навбар ул { маржа: 0; заполнение: 0; тип стиля списка: нет; } #навигационная панель { высота: 30 пикселей; цвет фона: #666; отступ слева: 25px; минимальная ширина: 470 пикселей; } #навбар ли { плыть налево; положение: родственник; высота: 100%; } #navbar ли { дисплей: блок; отступ: 6px; ширина: 100 пикселей; цвет: #fff; текстовое оформление: нет; выравнивание текста: по центру; } #navbar ul li { float: none; } #navbar li:hover {цвет фона: #f90; } #navbar ul li:hover { background-color: #666; }Попробуйте »
Как создать гамбургер-меню в CSS?
Обзор
Гамбургер-меню включает и выключает панель навигации, скрывая ее за кнопкой или отображая ее. Он появляется, когда мы нажимаем на значок из трех линий, напоминающий гамбургер. Гамбургер-меню создает компактное , масштабируемое меню. В этой статье мы узнаем о создании адаптивных меню-гамбургеров и иконок-гамбургеров в CSS.
Предварительные условия
Прежде чем продолжить, убедитесь, что вы понимаете следующие основные идеи HTML и CSS:
- Flex-box
- псевдоэлемента
- медиа-запросы CSS
- Селекторы в CSS
Когда панель навигации заголовка содержит слишком много кнопок и ссылок, мы можем использовать меню-гамбургер для отображения навигационных ссылок на нашем веб-сайте. Гамбургер-меню создает компактное, масштабируемое меню. Меню называется меню «гамбургер», потому что значок гамбургера выглядит как стопка гамбургеров. Обычно это для небольших дисплеев и мобильных устройств. Однако веб-сайты для ПК также могут использовать гамбургер-меню CSS.
В следующем примере показано, как создать меню-гамбургер.
- У нас есть главное меню навигации и контейнер для создания значка гамбургера.
- Меню навигации состоит из нескольких ссылок.
- Поскольку мы используем чистый CSS, мы будем контролировать состояние значка, т. е. показывать или скрывать панель навигации с помощью флажка HTML.
- Мы укажем идентификатор флажка и свяжем его с меткой с помощью атрибута for. Нажав на <метка> установит и снимет флажок. Затем мы установим флажок с помощью CSS.
- Мы будем стилизовать навигацию главного меню и контейнер-кнопку-меню-гамбургер.
- Чтобы нарисовать три линии для значка гамбургера, мы будем использовать псевдоэлементы ::before и ::after. CSS для этого:
- Мы переместим верхнюю и нижнюю полосы или линии значка в положение средней линии.
- Мы спрячем среднюю линию.
- Наконец, мы повернем верхнюю и нижнюю линии на 45 градусов в противоположных направлениях, чтобы создать значок разреза/креста.
4. Отзывчивая панель навигации с использованием медиа-запросов CSS
- Мы добавим медиа-запросы CSS, чтобы сделать нашу панель навигации-гамбургера адаптивной.
- Мы должны выбрать ширину экрана, которая будет переключать полноэкранное меню и адаптивное меню-гамбургер CSS.
Выход
Вы можете посетить здесь, чтобы просмотреть больше
Мы даже можем создать значок меню с помощью CSS вместо использования готовых значков.
Следующий пример поможет нам научиться делать значок меню-гамбургера:
- Значок меню состоит из трех полос.
- Мы будем использовать три контейнера div и соответствующим образом стилизовать их для создания структуры панели.
- Мы укажем ширину и высоту полосы и добавим верхнее и нижнее поля, чтобы добавить пространство между каждой полосой.
HTML
CSS
ВЫВОД
Вы можете посетить здесь, чтобы просмотреть больше . После знакомства с гамбургер-меню CSS давайте рассмотрим несколько примеров и узнаем, как их создавать.
При нажатии значок гамбургера превращается в крест и служит кнопкой закрытия. Меню открывается, и в центре отображаются навигационные ссылки.
HTML
CSS
Вывод
Вы можете посетить здесь, чтобы просмотреть больше
Мы можем создать гамбургер-меню в полноэкранном режиме. Панель навигации занимает все окно браузера. Это удобно, когда в меню много вариантов или нужной информации.
HTML
CSS
Вывод
Вы можете посетить здесь, чтобы просмотреть больше
- Наш веб-сайт должен иметь адаптивную мобильную навигацию, поскольку значительная часть населения мира выходит в Интернет с помощью мобильных устройств.
- Полноэкранные меню часто неэффективны на маленьких экранах.
- Чтобы решить эту проблему, мы можем даже расположить меню вертикально, но пользователь должен прокручивать меню, чтобы получить информацию, что не идеально.
- Независимо от того, где находится пользователь на нашем веб-сайте, он может получить доступ к панели навигации с помощью фиксированного значка гамбургера.
Специальные возможности
Значки меню «Гамбургер» могут быть полезными, хотя и не самыми удобными для пользователя. С помощью ARIA он может стать доступным для людей с ограниченными возможностями. Программа чтения с экрана будет распознавать символ только как «гамбургер», а не как меню, когда мы скроем нашу панель навигации и заменим ее ею. С помощью следующих действий мы можем сделать его доступным:
- Скрыть значок меню от программы чтения с экрана.
- Убедитесь, что средства чтения с экрана знают, что есть строка меню, поэтому они могут щелкнуть ее, чтобы открыть.
Метка aria указывает, что ссылка существует.
Совместимость с браузерами
Меню-гамбургер использует различные основы CSS, такие как псевдоэлементы, псевдоклассы, селекторы и переходы. Практически все современные браузеры поддерживают эти свойства.
Браузер | Версия (прежде всего) |
---|---|
Google Chrome | 2.0 | Сафари | 1,0 |
Mozilla Firefox | 1.0 |
Microsoft Edge | 12.0 |
Chrome Android | 18 |
Firefox для Android | 4 |
Opera Android | 10.1 |
Safari на iOS | 1 |
OperaSamsung Internet | 1.0 |
WebView Android | 4.4 |
Заключение
- Гамбургер-меню включает и выключает панель навигации, скрывая ее за кнопкой или отображая ее.