Атрибут role тега <table>
Описание
Атрибут role определяет семантическую роль элемента <table> для вспомогательных технологий (например, скринридеров). Для таблиц особенно важно правильно указывать роль, чтобы обеспечить доступность данных.
<table role="grid">
<caption>Финансовый отчет</caption>
<tr>
<th scope="col">Квартал</th>
<th scope="col">Доход</th>
</tr>
<tr>
<td>Q1</td>
<td>$120,000</td>
</tr>
</table>
Основные роли для таблиц:
| Роль | Описание | Когда использовать |
|---|---|---|
table |
Стандартная таблица данных (значение по умолчанию) | Для обычных таблиц с данными |
grid |
Интерактивная таблица с возможностью навигации | Для таблиц с элементами управления |
presentation |
Указывает, что таблица используется только для верстки | Когда таблица не содержит реальных данных |
Особенности работы:
- Роль
tableназначается автоматически, если не указано иное - Для сложных таблиц могут потребоваться дополнительные ARIA-атрибуты
- Роли влияют на навигацию с клавиатуры
- Поддерживается современными скринридерами (NVDA, JAWS, VoiceOver)
Пример с разными ролями:
<!-- Таблица данных -->
<table role="table">
<tr><td>Обычная таблица данных</td></tr>
</table>
<!-- Таблица для верстки -->
<table role="presentation">
<tr><td>Элемент макета</td></tr>
</table>
Рекомендации:
- Используйте
role="table"только при необходимости переопределить - Для табличных данных всегда добавляйте
<th>с атрибутомscope - Избегайте
role="presentation"для реальных данных - Тестируйте с различными скринридерами
Ограничения:
- Неправильное использование ролей может ухудшить доступность
- Не заменяет семантическую HTML-разметку
- Требует дополнительных атрибутов для сложных сценариев
Примечание: Для сложных интерактивных таблиц рассмотрите использование дополнительных ARIA-атрибутов, таких как aria-rowcount и aria-colcount.