Олег Марков
Тег aside в HTML - назначение правильная семантика и примеры
Введение
Тег aside в HTML относится к семантическим элементам и описывает блок с косвенно связанной информацией. Проще говоря, это содержимое, которое дополняет основную часть страницы, но не является её ключевой линией повествования.
Смотрите, я покажу вам общую идею: если взять новостную статью, то основным контентом будет текст новости, а блок с рекомендованными материалами, цитатами автора, рекламой или боковым меню — это как раз кандидаты на использование aside.
В этой статье вы разберётесь:
- что именно описывает тег aside с точки зрения семантики;
- чем он отличается от div и section;
- где его уместно использовать, а где нет;
- как применять его вместе с CSS и ARIA;
- как aside влияет на доступность и SEO;
- как организовать вложенность aside на странице.
Теперь давайте последовательно разберём все ключевые сценарии использования.
Семантика тега aside
Что такое aside в терминах спецификации HTML
Тег aside описан в спецификации HTML как раздел страницы, содержащий контент, косвенно связанный с основным содержимым. Важный акцент — именно косвенно. Это не мусорный блок и не просто «то, что стоит сбоку», а логическое дополнение.
Типичные примеры содержания для aside:
- блок «Похожие статьи» или «Читайте также»;
- боковая колонка с биографией автора;
- список последних постов блога;
- блок с цитатой, вынесенной из текста;
- рекламный блок, относящийся к теме страницы;
- небольшой блок с дополнительными фактами, терминами, заметками.
Обратите внимание: важна не визуальная позиция (сбоку, сверху, снизу), а смысловая. aside может находиться и под основным текстом, но при этом всё равно оставаться «косвенным» содержимым.
Когда стоит использовать aside
Давайте разберёмся на примере. Представьте страницу статьи:
- основной текст — история, объяснение, туториал;
- сбоку — список дополнительных ресурсов, автор, ссылки по теме;
- внутри текста — вставка с краткой справкой по термину;
- под текстом — блок комментариев и подписка на рассылку.
Для aside подходят:
- дополнительные материалы по теме;
- короткие врезки с дополнительной информацией;
- боковые панели с неосновной информацией.
Не подходят:
- основной контент статьи;
- глобальный сайдбар, который повторяется на всех страницах и содержит навигацию по сайту (его лучше размечать через nav, а не через aside);
- каркасные контейнеры для layout (их проще сделать на div).
Отличие aside от div, section и article
Чтобы правильно применять aside, полезно сравнить его с соседними тегами:
- div — чисто структурный контейнер без семантики. Он ничего не говорит ни браузеру, ни поисковику, ни скринридеру о назначении содержимого.
- section — логический раздел контента со своим заголовком, который является частью основного потока документа.
- article — самостоятельный фрагмент контента, который можно распространять отдельно (новость, пост, комментарий).
- aside — блок, который дополняет основной контент, но не является его продолжением или частью в привычном смысле.
Если убрать aside, основная часть страницы должна остаться понятной. Это хороший практический критерий.
Базовый пример использования aside
Давайте посмотрим на базовую разметку страницы статьи с использованием aside.
<main>
<!-- Основной контент статьи -->
<article>
<h1>Как выбрать велосипед для города</h1>
<p>В этой статье мы разберём ключевые критерии выбора городского велосипеда...</p>
<!-- Остальной текст статьи -->
</article>
<!-- Боковой блок с дополнительной информацией -->
<aside>
<h2>Полезные ресурсы</h2>
<ul>
<li><a href="#size">Как подобрать размер рамы</a></li>
<li><a href="#types">Типы городских велосипедов</a></li>
<li><a href="#care">Уход за велосипедом</a></li>
</ul>
</aside>
</main>Комментарии к примеру:
- article содержит основной контент — статью.
- aside идёт рядом в структуре main и содержит дополнительные ссылки.
- Если убрать aside, статья всё равно останется самодостаточной.
Теперь вы увидите, как это выглядит вёрстанным: с помощью CSS вы можете разместить aside сбоку, но семантика не зависит от того, где он окажется визуально.
Варианты размещения aside в структуре документа
aside как часть основного содержимого main
Наиболее частый случай — aside находится внутри main и относится к основному контенту текущей страницы.
<main>
<h1>Руководство по HTML5</h1>
<article>
<h2>Семантические теги</h2>
<p>HTML5 добавил ряд новых семантических элементов...</p>
</article>
<aside>
<h2>Справка по тегам</h2>
<p>Список основных семантических тегов вы найдёте ниже.</p>
<ul>
<li><code><header></code></li>
<li><code><nav></code></li>
<li><code><section></code></li>
<li><code><article></code></li>
<li><code><aside></code></li>
<li><code><footer></code></li>
</ul>
</aside>
</main>Здесь aside дополняет основную тему страницы — руководство по HTML5 — но не является её центральным содержимым.
aside внутри article
Иногда вам нужно сделать вставку прямо внутри статьи — например, вынести определение термина, дать дополнительный комментарий или показать краткую справку. В таком случае aside логично поместить внутрь article.
<article>
<h1>Что такое контентная модель в HTML</h1>
<p>Контентная модель определяет, какие элементы могут быть вложены друг в друга...</p>
<aside>
<h2>Определение</h2>
<p>
Контентная модель — это формальное описание того, какие элементы разрешено
вкладывать в данный элемент.
</p>
</aside>
<p>На практике это означает, что вы не можете произвольно вкладывать элементы...</p>
</article>Как видите, блок с определением — это дополнительная информация, которая помогает понять основную мысль, но не является основным текстом статьи.
aside вне main — глобальный контекст
В редких случаях aside может находиться вне main, если его содержимое относится не к конкретной статье, а ко всей странице или ко всему сайту. Например, блок с общим уведомлением, который дополняет любой контент.
<header>
<h1>Tech Blog</h1>
</header>
<aside>
<h2>Важное уведомление</h2>
<p>Сайт будет недоступен 10 числа с 2 до 4 ночи по Москве.</p>
</aside>
<main>
<!-- Основной контент конкретной страницы -->
</main>Здесь aside не привязан к конкретной статье, а дополняет страницу в целом.
Типичные сценарии применения aside
Боковое меню с дополнительной навигацией
Если у вас есть навигация, которая относится к разделу или статье (например, «по этой теме», «в этом разделе»), её удобно оформить через aside с вложенным nav.
<main>
<article>
<h1>Документация по API</h1>
<p>Здесь вы найдёте описание REST API...</p>
</article>
<aside>
<nav aria-label="Навигация по документации">
<!-- aria-label объясняет, для чего эта навигация -->
<h2>Разделы документации</h2>
<ul>
<li><a href="/getting-started">Начало работы</a></li>
<li><a href="/auth">Аутентификация</a></li>
<li><a href="/errors">Ошибки</a></li>
</ul>
</nav>
</aside>
</main>Комментарий:
- aside говорит: «это дополнительная навигация».
- nav внутри описывает, что это именно меню.
- aria-label помогает скринридерам озвучивать назначение меню.
Блок с биографией автора
В блогах и медиа часто используют блок об авторе. Это классический кандидат на aside.
<article>
<h1>Как писать понятный технический текст</h1>
<p>В этом материале мы рассмотрим основные принципы...</p>
<aside>
<h2>Об авторе</h2>
<p><strong>Мария Иванова</strong> — технический писатель с 7-летним опытом.</p>
<p>Специализируется на документации для разработчиков и обучающих материалах.</p>
</aside>
<p>Продолжим разбор ключевых принципов оформления текста...</p>
</article>Если убрать блок «Об авторе», статья останется полной — это как раз нужная семантика для aside.
Блок «Похожие материалы» или «Читайте также»
Здесь я размещаю пример, чтобы вам было проще понять, как дополнить статью связанными материалами.
<main>
<article>
<h1>Основы Flexbox</h1>
<p>Flexbox — это модель компоновки в CSS, которая упрощает построение макетов...</p>
</article>
<aside aria-label="Похожие статьи">
<!-- aria-label помогает, если заголовка h2 нет или он неочевиден -->
<h2>Читайте также</h2>
<ul>
<li><a href="/css-grid">CSS Grid на практике</a></li>
<li><a href="/responsive-design">Адаптивная вёрстка</a></li>
<li><a href="/positioning">Позиционирование в CSS</a></li>
</ul>
</aside>
</main>Важный момент: список похожих материалов логически не продолжает основную статью, а дополняет её, поэтому aside здесь подходит.
Реклама и промо блоки
Рекламные блоки, которые тематически связаны со страницей, тоже часто оформляют в aside.
<main>
<article>
<h1>Как начать программировать на Go</h1>
<p>Язык Go был разработан в Google и ориентирован на...</p>
</article>
<aside aria-label="Рекламное предложение">
<h2>Курс по Go для разработчиков</h2>
<p>Изучите Go за 6 недель на практическом курсе.</p>
<a href="/go-course" class="btn">Подробнее</a>
</aside>
</main>Комментарии:
- aside указывает, что блок связан со страницей, но это всё-таки отдельный, дополнительный контент.
- aria-label дополнительно подчёркивает роль блока, особенно для пользователей скринридеров.
Взаимодействие aside с CSS и layout
Боковая колонка с помощью flexbox
Теперь давайте перейдем к следующему шагу — посмотрим, как встроить aside в layout. Самый распространённый вариант — двухколоночный макет с использованием flexbox.
<main class="layout">
<article class="layout__content">
<h1>Основы HTML</h1>
<p>HTML — это язык разметки гипертекста...</p>
</article>
<aside class="layout__sidebar">
<h2>Содержание</h2>
<ol>
<li><a href="#history">История HTML</a></li>
<li><a href="#tags">Основные теги</a></li>
<li><a href="#semantics">Семантика</a></li>
</ol>
</aside>
</main>CSS:
/* Делаем из main гибкий контейнер */
.layout {
display: flex; /* Включаем flexbox */
gap: 2rem; /* Отступ между колонками */
max-width: 1200px; /* Ограничиваем ширину макета */
margin: 0 auto; /* Центрируем страницу */
padding: 1rem; /* Внутренние отступы */
}
/* Основной контент занимает больше места */
.layout__content {
flex: 1 1 auto; /* Растягивается, занимает всё доступное */
}
/* Боковая панель уже */
.layout__sidebar {
flex: 0 0 300px; /* Фиксированная ширина 300px */
}Комментарии к CSS:
- тег aside здесь получает стили только через класс layout__sidebar, что даёт вам гибкость;
- семантика (aside) и layout (flexbox) работают независимо друг от друга;
- если вы решите изменить расположение колонок, семантику менять не придётся.
Мобильная адаптация aside
На узких экранах боковая колонка часто уходит вниз или вверх. Давайте посмотрим, что происходит в следующем примере адаптивной вёрстки.
/* Мобильная версия — колонки складываются в одну */
@media (max-width: 768px) {
.layout {
flex-direction: column; /* Вертикальное расположение */
}
.layout__sidebar {
order: -1; /* Переносим aside выше основного контента */
}
}Комментарии:
- order позволяет визуально переместить aside, не меняя структуру HTML;
- для скринридера и поисковика порядок в DOM остаётся прежним, это важно учитывать при планировании структуры.
Доступность и ARIA для aside
Как скринридеры видят aside
Семантика aside в большинстве современных браузеров поддерживается экранными дикторами. Для пользователя скринридера этот элемент воспринимается как «комплементарный» (complementary) регион — то есть дополнительная область страницы.
Поэтому aside полезен с точки зрения доступности:
- даёт пользователям вспомогательную структуру;
- позволяет быстрее перемещаться между областями («основной контент», «дополнительный контент» и т.п.).
Добавление заголовков к aside
Хорошая практика — почти всегда давать aside свой заголовок (h2 или ниже по уровню, в зависимости от иерархии).
<aside>
<h2>Словарь терминов</h2>
<dl>
<dt>HTML</dt>
<dd>Язык разметки гипертекста.</dd>
<dt>CSS</dt>
<dd>Язык описания внешнего вида документа.</dd>
</dl>
</aside>Зачем это нужно:
- пользователю легче понять, что это за блок;
- скринридер может прочитать заголовок и дать контекст;
- структура документа становится понятнее даже визуально.
Использование ARIA-атрибутов
Обычно aside достаточно сам по себе, без дополнительных ARIA. Но в некоторых случаях стоит применить aria-label или aria-labelledby.
aria-label
Если у aside нет видимого заголовка, но вы хотите чётко обозначить его роль, используйте aria-label.
<aside aria-label="Список популярных статей">
<!-- Нет отдельного заголовка h2, но есть aria-label -->
<ul>
<li><a href="/post-1">10 ошибок в JavaScript</a></li>
<li><a href="/post-2">Как работает event loop</a></li>
</ul>
</aside>aria-labelledby
Если хотите связать заголовок и aside явно:
<aside aria-labelledby="popular-posts-title">
<h2 id="popular-posts-title">Популярные статьи</h2>
<ul>
<li><a href="/post-1">Основы TypeScript</a></li>
<li><a href="/post-2">Продвинутый React</a></li>
</ul>
</aside>Комментарии:
- aria-labelledby говорит скринридеру: название региона берётся из элемента с указанным id;
- это полезно, если у вас сложная структура с несколькими похожими блоками.
Когда не нужно добавлять role="complementary"
Тег aside уже по умолчанию имеет роль complementary, поэтому в большинстве случаев role="complementary" добавлять не нужно. Дублирование роли не даёт дополнительных преимуществ и только перегружает разметку.
Вложенность и несколько aside на странице
Можно ли использовать несколько aside
Вы можете использовать несколько aside на одной странице. Главное — чтобы каждый из них действительно описывал дополнительный, а не основной контент.
Например:
<main>
<article>
<h1>Работа с формами в HTML</h1>
<p>Формы позволяют отправлять данные на сервер...</p>
<!-- Локальный aside внутри статьи -->
<aside>
<h2>Совет</h2>
<p>Не забывайте указывать атрибут name у полей формы.</p>
</aside>
</article>
<!-- Глобальный aside для этой страницы -->
<aside>
<h2>Полезные ссылки</h2>
<ul>
<li><a href="/validation">Валидация форм</a></li>
<li><a href="/security">Безопасность форм</a></li>
</ul>
</aside>
</main>Здесь:
- один aside относится к конкретной статье (локальный);
- второй — ко всей странице (глобальный).
Вложенность aside в article и section
Покажу вам, как это реализовано на практике на примере более сложной структуры документа:
<main>
<section>
<h1>Руководство по CSS</h1>
<article>
<h2>Псевдоклассы</h2>
<p>Псевдоклассы позволяют описать особые состояния элементов...</p>
<aside>
<h3>Пример псевдокласса :hover</h3>
<p>Используйте :hover, чтобы изменить стиль элемента при наведении.</p>
</aside>
</article>
<article>
<h2>Псевдоэлементы</h2>
<p>Псевдоэлементы используются для стилизации частей элемента...</p>
</article>
<aside>
<h2>Ссылки по теме</h2>
<ul>
<li><a href="/selectors">Селекторы CSS</a></li>
<li><a href="/specificity">Специфичность</a></li>
</ul>
</aside>
</section>
</main>Комментарии:
- aside внутри article дополняет конкретную тему (псевдоклассы);
- aside внутри section дополняет весь раздел руководства по CSS.
Влияние aside на SEO
Как поисковые системы относятся к aside
Современные поисковые системы учитывают семантику HTML. Для них aside — это сигнал, что контент внутри:
- связан с темой страницы;
- дополнительный, а не основной.
Но важный момент: сам по себе тег aside не «улучшает» и не «портит» SEO. Он просто помогает поисковику лучше понять структуру и акценты:
- основной текст остаётся в main/article;
- дополнительная навигация, ссылки, промо — в aside.
Если использовать aside по назначению, поисковой системе проще отделить ключевой контент от второстепенного. Это косвенно может улучшить восприятие страницы.
Типичные ошибки с точки зрения SEO
Частые ошибки:
Весь основной контент завернут в aside.
В таком случае поисковик может воспринять страницу как набор второстепенной информации.В aside кладут несвязанный контент.
Например, случайные ссылки, не относящиеся к теме страницы. Это может выглядеть как спам.Перегрузка aside ссылками.
Если aside превращается в гигантскую «ссылочную свалку», это ухудшает удобство и может насторожить поисковики.
Обратите внимание: гораздо важнее сама структура и полезность контента, чем наличие или отсутствие конкретного тега. aside — лишь инструмент для более точной разметки.
Когда НЕ стоит использовать aside
Если это основной контент
Если блок содержит ключевую информацию по теме страницы, не размечайте его как aside. Лучше использовать article, section или просто часть основного потока внутри main.
Примеры, где aside неуместен:
- основной текст статьи;
- раздел с важными шагами инструкции;
- контент, на который пользователь пришёл по запросу.
Если это просто layout без семантики
Иногда разработчики пытаются использовать aside как «любой правый блок» только потому, что он визуально сбоку. Это неверный подход.
Если блок:
- нужен только для сетки;
- не несёт дополнительного смысла;
- не отделим от основного контента логически,
то проще использовать div.
Если это глобальная структура навигации по сайту
Глобальное меню, основное боковое меню сайта, хедер и футер лучше размечать через соответствующие теги:
- nav — основная навигация;
- header — шапка страницы или раздела;
- footer — подвал страницы или раздела.
aside можно использовать только для дополнительной, не основной навигации, связанной с текущим контентом.
Практические рекомендации по стилю и структуре
Давайте подытожим принципы выбора aside
Используйте aside, если выполняются условия:
- контент связан с темой страницы или раздела;
- его можно удалить, и при этом основная мысль останется ясной;
- блок помогает, но не критичен для понимания.
Не используйте aside, если:
- это ядро страницы;
- блок является частью основной пошаговой инструкции;
- только визуальное расположение (сбоку) отличает его от основного текста.
Называйте aside понятными заголовками
Старайтесь всегда добавлять заголовок в aside — это помогает и пользователям, и вспомогательным технологиям.
Примеры удачных заголовков:
- «Читайте также»;
- «Справка по терминам»;
- «Об авторе»;
- «Смотрите также по теме»;
- «Ссылки по теме».
Неудачные варианты:
- «Информация»;
- «Разное»;
- «Блок» — они не дают понимания, что внутри.
Сочетайте aside с классами и BEM
Семантика не отменяет необходимости использовать классы для стилизации. Часто удобно комбинировать:
<aside class="sidebar sidebar--docs">
<h2 class="sidebar__title">Навигация по разделу</h2>
<ul class="sidebar__list">
<li class="sidebar__item"><a href="#intro">Введение</a></li>
<li class="sidebar__item"><a href="#install">Установка</a></li>
</ul>
</aside>Комментарии:
- тег aside объясняет роль блока;
- классы sidebar* управляют внешним видом;
- вы можете при необходимости заменить aside на div, не ломая CSS, если вдруг изменится семантика (например, блок станет основным контентом).
Заключение
Тег aside — это семантический инструмент для разметки дополнительного, но связанного с основной темой контента. Он не предназначен для построения layout сам по себе, но отлично работает в связке с CSS-гридом, flexbox и другими технологиями вёрстки.
Основная идея проста: если блок можно убрать, не разрушив смысл страницы, но при этом он помогает разобраться, расширяет понимание или даёт полезные ссылки — это хороший кандидат для aside.
Вы рассмотрели:
- семантику aside и отличие от div, section, article;
- варианты размещения aside в структуре документа;
- типичные сценарии применения (сайдбары, биографии, похожие материалы, реклама);
- работу aside с CSS и адаптивной вёрсткой;
- особенности доступности и использования ARIA;
- влияние aside на SEO и типичные ошибки.
Используйте aside осознанно — как способ подсказать браузерам, поисковикам и пользователям, какие части страницы являются основными, а какие — вспомогательными.
Частозадаваемые технические вопросы
Нужно ли всегда помещать aside внутрь main
Не обязательно. aside можно располагать как внутри main, так и вне его. Если блок относится к конкретному основному содержимому страницы — логично поместить его внутрь main. Если же он относится ко всей странице или сайту (например, общее уведомление), его можно разместить на одном уровне с main. Главное — сохранять логическую связь и не использовать aside для чистого layout.
Можно ли вкладывать один aside в другой
Технически можно, HTML это не запрещает, но практически это почти всегда признак плохого дизайна структуры. Если вы хотите сгруппировать несколько дополнительных блоков, лучше поместите их в общий div или section, а каждый смысловой дополнительный блок оформите отдельным aside. Так структура будет понятнее и вам, и пользователям.
Как обозначить основной сайдбар сайта — через nav или aside
Если сайдбар содержит в основном навигацию по сайту (разделы, ключевые страницы), его лучше разметить как nav, а не aside. Можно совместить — использовать aside как «обёртку» для дополнительной навигации по разделу, а nav внутри для самих ссылок. Для глобальных меню акцент делайте на nav, а aside оставляйте для контента, дополняющего текущую страницу.
Можно ли использовать role="complementary" на div вместо aside
Да, вы можете назначить div роль complementary, и с точки зрения ARIA он будет вести себя похоже на aside. Но предпочтительней всё же использовать нативный тег aside, потому что он семантически понятен без дополнительных атрибутов, лучше поддерживается инструментами и проще для чтения кода. role имеет смысл для обратной совместимости в сильно ограниченных средах.
Как корректно скрыть aside визуально, но оставить для скринридеров
Если вы хотите скрыть aside с экрана, но сохранить его для вспомогательных технологий, используйте CSS-паттерн «visually hidden», а не display: none. Например:
.visually-hidden {
position: absolute; /* Убираем из потока */
width: 1px;
height: 1px;
margin: -1px;
border: 0;
padding: 0;
clip: rect(0 0 0 0); /* Обрезаем область */
overflow: hidden; /* Скрываем содержимое */
}И примените класс к aside или его содержимому. Такой блок не будет виден визуально, но останется доступным для скринридеров.
Постройте личный план изучения Html до уровня Middle — бесплатно!
Html — часть карты развития Frontend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Html
Лучшие курсы по теме

HTML и CSS
Антон Ларичев
TypeScript с нуля
Антон Ларичев