Bad Practices для сайтов
Разбор критических ошибок веб-дизайна. Почему слайдеры, автоплей и тяжёлые страницы снижают конверсию и позиции в Google и Yandex
45
1 мин.

200
2 мин.
Стандарт SSA определяет требования к семантике, доступности и логике работы аккордеона.
Элементы аккордеона в данном стандарте называются спойлерами, спойлеры могут быть отдельными от аккордеона сущностями, но отдельно они применяются редко.
Основой аккордеона является список <ul>. Это гарантирует, что вспомогательные технологии воспримут группу спойлеров как единый перечень связанных элементов.
Внутри каждого элемента списка <li> располагается тег <details>, который строго содержит:
<summary>;<div>.<ul class="ssa-accordion"> <li class="ssa-spoiler"> <details class="ssa-spoiler__details" name="faq"> <summary class="ssa-spoiler__summary"> <h3 class="ssa-spoiler__title">Текст триггера</h3> <span class="ssa-spoiler__icon" aria-hidden="true"></span> </summary> <div class="ssa-spoiler__content"></div> </details> </li> </ul>
Атрибут
nameпозволяет создавать аккордеоны, где одновременно может быть открыт только один спойлер (при условии одинакового значенияnameу всей группы).
Семантика состояния - состояние «развернуто/свернуто» транслируется скринридерам автоматически благодаря использованию нативного тега <details>. Дополнительные ARIA-атрибуты для этого не требуются.
Скрытие декоративных элементов - иконке (стрелке) всегда добавляется aria-hidden="true". Она несет визуальную функцию, и её озвучивание создало бы лишний «шум» для пользователя.
Управление с клавиатуры - благодаря <summary>, элемент автоматически попадает в фокус при нажатии Tab и активируется клавишами Enter или Space.
Визуальный фокус - обязательно использование псевдокласса :focus-visible. При навигации с клавиатуры пользователь должен видеть четкую обводку (outline) активного элемента.
Иерархия заголовков - текст внутри триггера должен быть обернут в заголовок (<h3>–<h6>), соответствующий структуре страницы, чтобы пользователи скринридеров могли быстро перемещаться по разделам аккордеона.
Область нажатия триггера <summary> должна быть максимально большой. Это критично для мобильных устройств.
У триггера и контента должны быть раздельные внутренние отступы. Это увеличивает площадь активной зоны, не «схлопывая» текст.
Пользователь должен мгновенно понимать состояние элемента через три типа реакций:
/* Базовые стили */ .ssa-spoiler__summary { display: flex; justify-content: space-between; align-items: center; padding: 16px 20px; cursor: pointer; list-style: none; /* Скрытие системного маркера */ } .ssa-spoiler__summary::-webkit-details-marker { display: none; } .ssa-spoiler__summary:hover { background-color: rgb(0 0 0 / 5%); } /* Состояние при открытии */ .ssa-spoiler__details[open] .ssa-spoiler__summary { background-color: #f8f9fa; border-block-end: 1px solid #eee; } /* Анимация иконки */ .ssa-spoiler__icon { flex-shrink: 0; inline-size: 24px; block-size: 24px; transition: rotate 0.3s ease-in-out; } .ssa-spoiler__details[open] .ssa-spoiler__icon { rotate: 180deg; }
Статья будет дополнятся
Похожие категории:
Разбор критических ошибок веб-дизайна. Почему слайдеры, автоплей и тяжёлые страницы снижают конверсию и позиции в Google и Yandex
45
1 мин.
Стандарт SSP определяет требования к семантике, доступности и логике работы постраничной навигации
146
1 мин.
Стандарт SSPS определяет требования к структуре и наименованию файлов и папок в проекте
95
2 мин.
Стандарт SSV определяет требования к семантике, настройке фоновых и интерактивных видео, атрибутам для Safari, правил доступности и весу видео
140
3 мин.
Решение проблемы с работой Vite при включённом VPN, настройка соединения, для избежания перенаправления локального трафика в VPN-туннель
185
2 мин.