Дополнительно
В чем разница между атрибутами HTML 'hidden' и 'aria-hidden'?
При работе с Angular Material я постоянно встречаю атрибут aria. Может кто-нибудь объяснить мне, что означает префикс aria? Но самое главное, что я пытаюсь понять, это разницу между атрибутами aria-hidden
и hidden
.
233
4
ARIA (Accessible Rich Internet Applications) определяет способ сделать веб-контент и веб-приложения более доступными для людей с ограниченными возможностями.
Атрибут
hidden
является новым в HTML5 и указывает браузерам не отображать элемент. Свойствоaria-hidden
указывает экранным ридерам, следует ли им игнорировать элемент. Более подробную информацию можно найти в документации w3:https://www.w3.org/WAI/PF/aria/states_and_properties#aria-hidden
Использование этих стандартов может облегчить людям с ограниченными возможностями пользование Интернетом.
Скрытый атрибут - это булев атрибут (True/False). Когда этот атрибут используется на элементе, он удаляет всю релевантность этого элемента. Когда пользователь просматривает html-страницу, элементы с атрибутом hidden не должны быть видны.
Пример:
Атрибуты Aria-hidden указывают, что элемент и ВСЕ его потомки по-прежнему видны в браузере, но будут невидимы для средств обеспечения доступности, таких как программы чтения с экрана.
Пример:
Посмотрите на это. Это должно ответить на все ваши вопросы.
Примечание: ARIA расшифровывается как Accessible Rich Internet Applications.
Источники: Paciello Group
Семантическое различие
Согласно HTML 5.2:
В качестве примера можно привести список вкладок, в котором некоторые панели не отображаются, или экран входа в систему, который исчезает после входа пользователя в систему. Мне нравится называть такие вещи "темпорально релевантными", то есть они релевантны по времени.
С другой стороны, ARIA 1.1 гласит:
Другими словами, элементы с
aria-hidden="true"
удаляются из дерева доступности, которое большинство вспомогательных технологий почитает, а элементы сaria-hidden="false"
обязательно будут подвергаться воздействию дерева. Элементы без атрибутаaria-hidden
находятся в "неопределенном (по умолчанию)" состоянии, что означает, что пользовательские агенты должны раскрывать их для дерева на основе их рендеринга. Например, агент пользователя может решить удалить его, если цвет его текста совпадает с цветом фона.Теперь давайте сравним семантику. Уместно использовать
hidden
, но неaria-hidden
, для элемента, который еще не является "временно актуальным", но может стать актуальным в будущем (в этом случае вы будете использовать динамические скрипты для удаления атрибутаhidden
). И наоборот, уместно использоватьaria-hidden
, но неhidden
, для элемента, который всегда актуален, но который вы не хотите загромождать API доступности; такие элементы могут включать "визуальные изыски", такие как иконки и/или изображения, которые не являются необходимыми для пользователя.Эффективное различие
Семантика имеет предсказуемые эффекты* в браузерах/агентах пользователя. Причина, по которой я делаю различие, заключается в том, что поведение агента пользователя рекомендуется, но не обязательно* в спецификациях.
Атрибут
hidden
должен скрывать элемент от всех представлений, включая принтеры и устройства чтения с экрана (при условии, что эти устройства соблюдают спецификации HTML). Если вы хотите удалить элемент из дерева доступности также как визуальные средства,hidden
сделает это. Однако не используйтеhidden
только потому, что вам нужен этот эффект. Сначала спросите себя, является лиhidden
семантически правильным (см. выше). Еслиhidden
не является семантически корректным, но вы все равно хотите визуально скрыть элемент, вы можете использовать другие техники, например, CSS.Элементы с
aria-hidden="true"
не отображаются в дереве доступности, поэтому, например, экранные сканеры не будут их отображать. Эту технику следует использовать осторожно, так как она обеспечит разный опыт для разных пользователей: доступные агенты пользователя не будут объявлять/отрисовывать их, но они все равно будут отображаться в визуальных агентах. Это может быть хорошо, если все сделано правильно, но есть вероятность злоупотребления.Синтаксическое различие
Наконец, существует разница в синтаксисе между двумя атрибутами.
hidden
- это булевый атрибут, то есть если атрибут присутствует, то он истинен, независимо от того, какое значение он может иметь, а если атрибут отсутствует, то он ложен. Для истинного варианта лучше всего использовать либо вообще никакое значение (<div hidden>...</div>
), либо значение пустой строки (<div hidden="">...</div>
). Я бы не рекомендовалhidden="true"
, потому что кто-то, читая/обновляя ваш код, может сделать вывод, чтоhidden="false"
будет иметь противоположный эффект, что просто неверно.aria-hidden
, напротив, является перечислимым атрибутом, допускающим одно из конечного списка значений. Если атрибутaria-hidden
присутствует, его значение должно быть либо"true"
, либо"false"
. Если вам нужно состояние "undefined (по умолчанию)", удалите атрибут совсем.Дальнейшее чтение: https://github.com/chharvey/chharvey.github.io/wiki/Hidden-Content
установка Ария-скрытая ложь и переключение его на элемент.показать() работал для меня.
е.г
и когда прячешься