Перейти к содержанию

aria-current

Определение

aria-current – атрибут WAI-ARIA, помечающий текущий элемент в наборе: активный пункт меню, хлебную крошку, шаг чекаута, дату в календаре. Скринридер озвучивает его как «текущая страница» или «текущий шаг».

4 мин 58 Обновлено 12 августа

Атрибут aria-current – состояние (state) из спецификации WAI-ARIA (см. ARIA): он помечает элемент, который является текущим в наборе родственных элементов. Зрячий пользователь видит выделенный пункт меню – жирным, цветом, подчёркиванием; скринридер эту стилизацию не читает, и без атрибута активный пункт ничем не отличается от остальных. aria-current закрывает этот разрыв: программа чтения экрана озвучивает «текущая страница» вместе с текстом ссылки. Это один из самых дешёвых приёмов доступности (a11y): один атрибут, ноль JavaScript на классических сайтах, заметная польза для навигации.

Как это работает

Атрибут ставится на элемент внутри набора – пункт меню, хлебную крошку, шаг мастера, ячейку календаря – и принимает одно из семи значений:

Значения aria-current
ЗначениеЧто помечаетТиповой сценарий
pageТекущая страница в наборе ссылокМеню, хлебные крошки, пагинация
stepТекущий шаг процессаЧекаут, многошаговая форма, визард
locationТекущая точка в визуальном окруженииПодсвеченный узел блок-схемы
dateТекущая датаКалендарь, датапикер
timeТекущее времяРасписание
trueТекущий элемент набора, если точные значения не подходятОбщий случай
falseНе текущий элемент (значение по умолчанию)Атрибут обычно просто не ставят

Скринридер добавляет статус к озвучке элемента: ссылку «Услуги» с aria-current="page" NVDA объявит как «Услуги, текущая страница» – пользователь получает ту же информацию, что зрячий считывает по выделению цветом.

Два правила из спецификации. Первое: текущим помечают только один элемент набора – два aria-current в одном меню дезориентируют пользователя. При этом на одной странице спокойно сосуществуют разные наборы: page в главном меню и step в шагах оформления заказа. Второе: любое нераспознанное непустое значение трактуется как true. Опечатка вида aria-current="active" разметку не сломает, элемент будет объявлен текущим, но точную семантику – страница, шаг, дата – скринридер уже не передаст.

page или location: что ставить на хлебные крошки

Частая путаница – выбор значения для крошек. Паттерн Breadcrumb в W3C ARIA Authoring Practices Guide (APG) однозначен: ссылка на текущую страницу получает aria-current="page"; если последний элемент крошек не является ссылкой, атрибут опционален. Значение location зарезервировано за другим сценарием – текущей точкой в визуальном контексте вроде узла блок-схемы. Совет ставить в крошки location, который встречается в части статей, расходится с APG – ориентироваться стоит на первоисточник. Запомнить разницу просто: page отвечает на вопрос «на какой я странице», location – «в какой точке окружения я нахожусь».

Не подменяет aria-current и атрибут aria-selected: в ролях tab, option, gridcell и row используется aria-selected. Показательный случай – датапикер: сегодняшний день несёт aria-current="date", а выбранная пользователем дата – aria-selected="true". Это два разных состояния на соседних ячейках одного календаря.

Зачем это нужно

Классический подход к активному пункту меню – класс .active, который несёт только визуал. aria-current делает ту же работу сразу на двух уровнях:

  • Семантика – скринридер объявляет «текущая страница», и пользователь понимает, где находится, не сопоставляя пункты меню с заголовком страницы.
  • Стилизация – CSS-селектор атрибута заменяет класс: nav a[aria-current="page"] { … }. Состояние и стиль живут в одном источнике правды, дублирующий класс .active становится не нужен.

Сценарии применения – вся навигация, где есть «текущий» элемент: главное меню, хлебные крошки, пагинация каталога, шаги чекаута, календарь. Приём давно вышел на уровень платформ: в ядре Drupal, например, ссылки на текущую страницу автоматически получают aria-current="page". В SPA атрибут переставляют скриптом при смене маршрута; на классических сайтах, где HTML собирает сервер, достаточно условия в шаблоне меню. Есть и косвенный бонус для машинного чтения: явная пометка «вот текущая страница» помогает парсерам, включая краулеры LLM, точнее восстанавливать структуру и навигацию сайта – та же логика семантической разметки, которая работает на GEO.

Пример

Меню Битрикс-сайта: компонент меню сам проставляет пунктам флаг SELECTED, так что правка сводится к шаблону – вместо класса выводим атрибут:

<nav aria-label="Основное меню">
  <ul>
    <li><a href="/">Главная</a></li>
    <li><a href="/services/" aria-current="page">Услуги</a></li>
    <li><a href="/contacts/">Контакты</a></li>
  </ul>
</nav>
nav a[aria-current="page"] {
  font-weight: 700;
  border-bottom: 2px solid currentColor;
}

Селектор атрибута заменил класс .active: PHP-шаблон выводит только атрибут, CSS реагирует на него, и рассинхрон «семантика есть, стиля нет» становится невозможным. Тот же приём – в хлебных крошках (паттерн APG) и шагах чекаута:

<nav aria-label="Хлебные крошки">
  <ol>
    <li><a href="/">Главная</a></li>
    <li><a href="/guides/">Гайды</a></li>
    <li><a href="/guides/aria/" aria-current="page">ARIA-атрибуты</a></li>
  </ol>
</nav>

<ol>
  <li><a href="/cart/">Корзина</a></li>
  <li><a href="/delivery/" aria-current="step">Доставка</a></li>
  <li>Оплата</li>
</ol>

В пагинации каталога логика та же: aria-current="page" получает номер открытой страницы списка. Обратите внимание на aria-label у обоих nav: когда на странице несколько навигационных лендмарков, их различают именами – подробнее в статье про aria-label. А состояние раскрытия мобильного меню, внутри которого живёт этот список, сообщает уже другой атрибут – aria-expanded.

Частые вопросы

Что делает aria-current и зачем он, если есть класс .active?

Класс .active несёт только визуал – скринридер его не читает. aria-current сообщает состояние программно: вместе с текстом ссылки будет озвучено «текущая страница». Стилизовать активный пункт при этом можно селектором [aria-current="page"], так что дублирующий класс становится не нужен.

Какие значения принимает aria-current?

Семь: page (текущая страница), step (шаг процесса), location (точка в визуальном окружении), date (дата), time (время), true (общий случай) и false (по умолчанию – не текущий). Значение выбирают по типу набора: меню и крошки – page, чекаут – step, календарь – date.

Что ставить на хлебные крошки – page или location?

page: паттерн Breadcrumb в W3C APG прямо указывает, что ссылка на текущую страницу получает aria-current="page", а если последний элемент крошек не ссылка – атрибут опционален. location зарезервирован для текущей точки в визуальном контексте вроде узла блок-схемы. Советы ставить в крошки location расходятся с APG.

Можно ли пометить aria-current несколько элементов?

В одном наборе – нет: текущим помечают ровно один элемент, иначе пользователь скринридера дезориентирован. На странице при этом могут сосуществовать разные наборы со своими пометками: page в меню и step в шагах оформления заказа.

aria-current или aria-selected – что ставить на активный таб?

aria-selected: в ролях tab, option, gridcell и row используется именно он, aria-current там не замена. Показательный пример – датапикер: сегодняшний день помечен aria-current="date", а выбранная пользователем дата – aria-selected="true".

Что произойдёт, если написать невалидное значение вроде aria-current="active"?

Любая нераспознанная непустая строка трактуется как aria-current="true". Разметка не сломается и элемент будет объявлен текущим, но точную семантику – страница, шаг, дата – скринридер не передаст. Поэтому значение стоит брать только из списка семи валидных.

Как скринридер озвучивает aria-current="page"?

Вместе с текстом ссылки объявляется её статус: NVDA, например, читает «текущая страница» (current page). Пользователь сразу понимает, на каком пункте меню или крошке находится, не изучая остальную навигацию.

Связанные термины

Материалы по теме

Что почитать дальше по этой теме

Статья Что боты находят на сайте, а вы – нет Боты ходят по изнанке сайта, куда живой человек не забредёт, и фиксируют в логах то, чего не видно ни в Метрике, ни на витрине: падающие с ошибкой 500 страницы каталога, битый файл с 747 обращениями, поток сканеров секретов. Разбираю на реальных логах, что искать и как чинить. 7 мин 216 22 июля 2026 Инструкция Как выгрузить и читать access-логи, если хостинг хранит их три дня Access-лог – единственное место, где виден весь трафик сайта, включая ИИ-ботов, которых не замечают счётчики. Разбираю на практике: где взять логи, как не потерять их из-за ротации, какие команды показывают ботов, ошибки и подозрительную активность. 7 мин 170 21 июля 2026 Флагманский гайд AI-анализ email-обращений: методика на стыке Яндекс.Метрики и Claude Code Классический email-трекинг отвечает на вопрос «откуда пришло обращение». AI-слой отвечает на вопросы, которые раньше требовали ручного аналитика: значим ли email на фоне звонков, форм и мессенджеров, почему один источник даёт качественные обращения, а другой – пустые, какие сегменты визитов предшествуют письму, что написать в ответ с учётом пути пользователя. Здесь – как я собираю это на уже имеющемся стеке: Logs API Метрики, PostgreSQL и Claude Code, без новых платных сервисов. 11 мин 297 26 мая 2026 Флагманский гайд Майкор: ИИ-аудит проекта по 4 точкам контакта Майкор – это перекрёстный ИИ-аудит проекта в 4 точках контакта: сайт, контекстная реклама, AI-поиск и Яндекс.Карты. Я анализирую каждую систему и смотрю связки между ними – где маркетинг рассказывает одно, реклама ведёт на другое, а AI-системы цитируют третий номер телефона. В одном из моих аудитов медицинской клиники в Москве у организации в индексе AI-сервисов оказалось 6 разных номеров и всего 7 упоминаний на 64 проверочных запроса – при том, что в обычной выдаче Яндекса клиника была в топ-1. Майкор закрывает такие разрывы за один аудит вместо четырёх раздельных. 16 мин 501 13 мая 2026 Гайд FAQPage Schema: как разметить блок частых вопросов и попасть в AI-ответы FAQPage schema – один из самых эффективных типов разметки для попадания в AI-ответы. Страницы с FAQPage schema цитируются AI-поисковиками в 2,7 раза чаще. В этом гайде – формат разметки, правила написания ответов для AI, реализация на 1С-Битрикс и типичные ошибки, которые обнуляют эффект. 8 мин 331 25 апреля 2026