ARIA (Accessible Rich Internet Applications) — это набор атрибутов, предназначенных для улучшения доступности веб-приложений. В контексте Gridstack.js они обеспечивают взаимодействие динамических сеток с вспомогательными технологиями, такими как экранные читалки, и позволяют пользователю ориентироваться в структуре элементов сетки.
Gridstack.js поддерживает несколько ключевых ARIA-атрибутов, влияющих на восприятие и управление drag-and-drop интерфейсом, а также на понимание расположения и размеров виджетов сетки.
aria-grabbed"true" — элемент
перетаскивается, "false" — элемент не перетаскивается.Пример использования:
<div class="grid-stack-item" aria-grabbed="false">
<div class="grid-stack-item-content">Виджет</div>
</div>
При захвате виджета через drag-and-drop атрибут обновляется на
aria-grabbed="true".
aria-dropeffect"move",
"copy", "link", "none".Пример:
<div class="grid-stack" aria-dropeffect="move">
<!-- виджеты -->
</div>
Это сообщает пользователю, что перетаскиваемый элемент может быть перемещен внутри сетки.
aria-describedby и
aria-labelledbyПример:
<div class="grid-stack-item" aria-labelledby="widget1-title" aria-describedby="widget1-desc">
<div id="widget1-title">Заголовок виджета</div>
<div id="widget1-desc">Описание виджета, поясняющее его содержимое</div>
</div>
Gridstack.js предоставляет API события, которые позволяют автоматически обновлять ARIA-атрибуты при изменениях состояния виджетов:
dragstart — присвоение
aria-grabbed="true".dragstop — сброс
aria-grabbed="false".change — обновление атрибутов описания
и позиции для новых элементов сетки.Пример:
grid.on('dragstart', function(event, ui) {
ui.el.setAttribute('aria-grabbed', 'true');
});
grid.on('dragstop', function(event, ui) {
ui.el.setAttribute('aria-grabbed', 'false');
});
aria-describedby и aria-labelledby.aria-describedby, чтобы
пользователи понимали назначение блока.aria-dropeffect для родительской сетки, чтобы обозначить
допустимые действия с элементами.<div class="grid-stack" aria-dropeffect="move">
<div class="grid-stack-item" aria-grabbed="false" aria-labelledby="widget1-title" aria-describedby="widget1-desc">
<div class="grid-stack-item-content">
<h3 id="widget1-title">График продаж</h3>
<p id="widget1-desc">Отображает динамику продаж за месяц</p>
</div>
</div>
</div>
Эта структура обеспечивает максимальную совместимость с вспомогательными технологиями и делает интерфейс Gridstack.js доступным для всех категорий пользователей.
ARIA-атрибуты в Gridstack.js являются фундаментальным инструментом для доступности и управляемости сетки, особенно при активном использовании drag-and-drop и динамически создаваемых виджетов. Правильная реализация этих атрибутов позволяет сочетать интерактивность с поддержкой технологий для людей с ограниченными возможностями.