
Меню – один из ключевых элементов интерфейса, от которого зависит удобство навигации по сайту. Даже минималистичная структура без стилей способна выполнять свою задачу, если грамотно организовать HTML-разметку. Простое меню можно собрать с помощью обычного списка и ссылок – без JavaScript и внешних библиотек.
Основой служит тег <ul> с вложенными элементами <li>. Внутри каждого элемента размещается ссылка <a>, ведущая на нужный раздел. Такая структура интуитивно понятна поисковым системам и легко адаптируется под стилизацию через CSS или добавление интерактивности при необходимости.
Для горизонтального меню удобно использовать инлайн-блочные элементы или гибкую верстку через Flexbox. Вертикальное меню, наоборот, требует минимальных изменений и может использоваться в сайдбарах, мобильных версиях и административных панелях.
В статье показано, как создать базовое меню, применимое в блогах, лендингах и одностраничных приложениях. Примеры кода сопровождаются комментариями, позволяющими адаптировать их под конкретные задачи без лишней нагрузки на производительность.
Как создать горизонтальное меню с помощью списка
Для построения горизонтального меню используется ненумерованный список <ul> с вложенными элементами <li>. Чтобы расположить пункты меню в одну строку, каждому <li> применяется стиль display: inline-block;.
Пример структуры HTML:
<ul class="menu">
<li><a href="#">Главная</a></li>
<li><a href="#">О нас</a></li>
<li><a href="#">Услуги</a></li>
<li><a href="#">Контакты</a></li>
</ul>
CSS для горизонтального отображения:
.menu {
padding: 0;
margin: 0;
list-style: none;
}
.menu li {
display: inline-block;
margin-right: 20px;
}
.menu a {
text-decoration: none;
color: #333;
font-weight: bold;
}
Отступы между пунктами регулируются через margin-right. Последний элемент можно исключить от отступа с помощью псевдокласса :last-child:
.menu li:last-child {
margin-right: 0;
}
Для наведения применяется псевдокласс :hover к ссылкам:
.menu a:hover {
color: #007BFF;
}
Добавление ссылок в пункты меню
Чтобы пункт меню был кликабельным, оберните его в тег <a>. Это позволяет переходить на другие страницы или разделы сайта.
<ul>
<li><a href="/home">Главная</a></li>
<li><a href="/about">О нас</a></li>
<li><a href="/services">Услуги</a></li>
<li><a href="/contact">Контакты</a></li>
</ul>
Если меню вертикальное, структура остаётся неизменной. При горизонтальном меню важно использовать display: inline или inline-block для <li> через CSS, но HTML остаётся тем же.
Для перехода на внешний ресурс используйте полный URL с протоколом:
<li><a href="https://example.com">Партнёр</a></li>
Рекомендуется добавлять атрибут target="_blank" для внешних ссылок, чтобы они открывались в новой вкладке:
<li><a href="https://example.com" target="_blank">Партнёр</a></li>
Для якорных ссылок, переходящих к определённому разделу страницы, используйте идентификаторы:
<li><a href="#section1">К разделу 1</a></li>
Не помещайте тег <a> вне <li>, так как это нарушает семантику и может вызвать проблемы с доступностью.
При использовании SVG-иконок или других элементов внутри пункта меню, размещайте их внутри <a>:
<li>
<a href="/profile">
<svg>...</svg>
Профиль
</a>
</li>
Создание вертикального меню без CSS

Для вертикального меню, которое работает без подключения CSS, достаточно правильно структурировать список с помощью стандартных HTML-тегов. Используем только семантическую разметку.
Элементы списка по умолчанию отображаются вертикально. Для работы меню на базовом уровне достаточно:
- Использовать тег
<ul>для списка. - Оборачивать каждый пункт в
<li>. - Добавлять ссылку через
<a href="...">внутри каждого пункта.
Порядок и вложенность важны. Такой подход обеспечивает читаемую структуру и базовую навигацию даже при отключённых стилях. Это особенно полезно для быстрой прототипизации или в условиях ограниченной среды, где использование CSS невозможно.
Применение встроенных стилей для форматирования меню

Встроенные стили позволяют быстро задать оформление элементам меню без подключения внешних файлов. Это удобно при создании прототипов или единичных блоков.
Пример горизонтального меню с использованием встроенных стилей:
<ul style="list-style: none; margin: 0; padding: 0; display: flex; background-color: #333;">
<li style="margin: 0;">
<a href="#" style="display: block; padding: 10px 20px; color: white; text-decoration: none;">Главная</a>
</li>
<li style="margin: 0;">
<a href="#" style="display: block; padding: 10px 20px; color: white; text-decoration: none;">О нас</a>
</li>
<li style="margin: 0;">
<a href="#" style="display: block; padding: 10px 20px; color: white; text-decoration: none;">Контакты</a>
</li>
</ul>
Свойство display: flex; у <ul> выравнивает элементы по горизонтали. Отступы и маргины сброшены, чтобы убрать дефолтное оформление списка. Цвет фона задан через background-color.
Каждая ссылка оформлена через padding для увеличения кликабельной области и color для контраста с фоном. text-decoration: none; убирает подчёркивание по умолчанию.
Для интерактивности можно добавить эффект наведения:
<a href="#" style="display: block; padding: 10px 20px; color: white; text-decoration: none;" onmouseover="this.style.backgroundColor='#555'" onmouseout="this.style.backgroundColor=''">Пункт</a>
Такой подход позволяет контролировать поведение элементов без использования CSS-файлов. Однако при масштабировании проекта рекомендуется выносить стили во внешние источники для повышения читаемости и повторного использования.
Использование классов для стилизации пунктов меню

Для наглядной стилизации пунктов меню используется присвоение классов каждому элементу списка. Это позволяет точно управлять внешним видом каждого пункта, не затрагивая остальные элементы.
Пример структуры меню:
<ul class="menu">
<li class="menu-item active"><a href="#">Главная</a></li>
<li class="menu-item"><a href="#">О нас</a></li>
<li class="menu-item"><a href="#">Услуги</a></li>
<li class="menu-item"><a href="#">Контакты</a></li>
</ul>
Класс menu применяется ко всему списку для задания общих параметров: отступов, выравнивания, фоновых цветов. Класс menu-item – к каждому пункту меню для индивидуальной настройки: отступов, рамок, эффектов при наведении. Класс active выделяет текущую страницу – например, изменением цвета фона или шрифта.
CSS для этих классов может выглядеть так:
.menu {
list-style: none;
margin: 0;
padding: 0;
display: flex;
}
.menu-item {
margin-right: 20px;
}
.menu-item a {
text-decoration: none;
color: #333;
padding: 8px 12px;
display: inline-block;
}
.menu-item a:hover {
background-color: #f0f0f0;
border-radius: 4px;
}
.menu-item.active a {
font-weight: bold;
color: #0056b3;
}
Изменения в дизайне теперь легко вносить, редактируя стили по классам без правки HTML-структуры. Это особенно удобно при масштабировании проекта или подключении CSS-фреймворков.
Как добавить подменю с использованием вложенных списков
Для создания подменю в навигационном меню с помощью HTML можно использовать вложенные списки. Это позволяет эффективно группировать элементы меню и организовывать иерархию ссылок. Структура подменю строится с использованием тегов <ul> (неупорядоченный список) и <li> (элемент списка), где один из элементов списка будет содержать вложенный список.
Пример структуры меню с подменю:
В этом примере элемент списка «Услуги» содержит вложенный список, который формирует подменю с тремя пунктами. Для лучшего восприятия подменю может быть скрыто по умолчанию и отображаться при наведении на родительский элемент.
Для реализации данного поведения можно использовать CSS. Например, с помощью псевдокласса :hover можно сделать подменю видимым при наведении на родительский элемент:
li:hover > ul {
display: block;
}
ul ul {
display: none;
position: absolute;
background-color: #fff;
}
ul li {
position: relative;
}
Этот код скрывает подменю по умолчанию и показывает его только при наведении на родительский пункт меню. Важно использовать свойство position: absolute;, чтобы подменю не нарушало общую структуру страницы и располагалось поверх других элементов.
Для улучшения взаимодействия с пользователем, можно добавить плавную анимацию отображения подменю. Например, используя свойство transition, можно сделать появление подменю более плавным:
ul ul {
display: none;
opacity: 0;
transition: opacity 0.3s ease;
}
li:hover > ul {
display: block;
opacity: 1;
}
Таким образом, подменю будет плавно появляться при наведении курсора на родительский элемент, создавая более приятный визуальный эффект.
Интерактивное меню с псевдоклассами :hover и :active

Псевдоклассы :hover и :active позволяют создавать динамичные элементы интерфейса без использования JavaScript. Эти псевдоклассы активируются при взаимодействии с элементами, что добавляет интерактивности и улучшает пользовательский опыт.
Псевдокласс :hover применяется, когда пользователь наводит указатель мыши на элемент. Это позволяет изменять визуальное состояние элементов, например, изменять цвет фона, текст или анимацию. Например, для создания эффекта смены цвета фона при наведении на элементы меню, используйте следующий код:
nav a:hover {
background-color: #4CAF50;
color: white;
}
Важно учитывать, что псевдокласс :hover работает не только с ссылками, но и с любыми другими элементами, например, кнопками или div блоками, что расширяет его использование. Он является идеальным инструментом для создания визуальных откликов на действия пользователя, что повышает доступность и интерактивность сайта.
Псевдокласс :active срабатывает в момент, когда элемент активен, то есть при нажатии на него. Этот псевдокласс часто используется для создания эффекта нажатия, который помогает пользователю понять, что элемент был выбран или активирован. Для изменения стиля при нажатии на ссылку можно использовать следующий код:
nav a:active {
transform: scale(0.95);
}
В данном примере элемент меню уменьшится в размерах при клике, что даст ощущение «нажатости». :active также идеально работает с :hover, позволяя создавать комбинированные эффекты. Например, можно задать фон, который меняется при наведении, и затем еще больше изменяется при клике:
nav a:hover {
background-color: #4CAF50;
color: white;
}
nav a:active {
background-color: #45a049;
transform: scale(0.95);
}
Совмещение этих псевдоклассов позволяет добиться плавных визуальных переходов, которые делают меню более удобным и привлекательным для пользователей. Важно помнить, что эффекты не должны отвлекать от контента, а только дополнять интерфейс, улучшая восприятие и удобство навигации.
Вопрос-ответ:
Как создать простое меню на HTML?
Для создания простого меню на HTML, вам нужно использовать элемент `
