Может ли элементы быть одновременно role='tab'; и аккордионом (aria-expanded)?

Ссылка скопирована
1 ответ

Например, кнопка которая является переключателем табов, а так же открывается скрытый контент внутри себя. Как это правильно записать?
Просто по mdn написано что aria-expanded должна так же иметь aria-control, но у меня aria-control занято для контента таба.
https://codepen.io/poylar/pen/PodNwBR

Дополнительно:

Покажите дизайн, потому что по описанию выглядит как смешивание двух разных ui элементов, а это сомнительно даже не смотря на семантику и доступность.

  • Вадим,

    Может ли элементы быть одновременно role='tab'; и аккордионом (aria-expanded)?

    справа картинка меняется

  • godsplane, если меняется только картинка, то это чисто декоративная история. Табами не пахнет.
  • godsplane, что в адаптиве?
  • Вадим,

    Может ли элементы быть одновременно role='tab'; и аккордионом (aria-expanded)?

  • godsplane, Ну вот, а тут и подавно картинка как часть контента аккордиона
  • Вадим, ну все равно кнопки слева же переключат контент справа?
  • godsplane, Ну, в каком то смысле да. Но это не табы. Картинки декоративные, то есть это не контент.
    С учётом того, что требуется в адаптиве - это просто аккордион.
    Можно подумать над тем как это сверстать. Например выносить картинку через position, или, возможно, как-то хитро на гридах, через, например, area
  • Вадим, но даже если это не табы, то слева навигация это все равно кнопки?Которые делают сразу два дейсвтия?
  • А если добавть справа кусок текста то это уже станет табами?
  • godsplane,

    но даже если это не табы, то слева навигация это все равно кнопки?Которые делают сразу два дейсвтия?

    Смотря как сверстаете. Опять же, с учётом как это выглядит в адаптиве, то действие одно - активация контента в аккордеоне. А на стилях(ну или на js при активации) картинка просто вынесена.
    Если на стилях картинку вынести не получается, то да, действия 2. Но только одно из них соответствует ui элементу - аккордион. Смена картинки - побочное действие декоративного характера, не нуждающееся в проработке с точки зрения доступности.

    А если добавть справа кусок текста то это уже станет табами?

    С учётом адаптива это станет какой-то лажой, требующей переработки)
    Потому что 2 ui элемента смешаны в один.

  • Вадим, а разве если я сделаю навигацию слева кнопками role="tab" и справа картинка будет tablist а аккордион просто буду показывать по aria-selected="true" это не будет ок?
  • godsplane, Раз Вы заморачиваетесь со всеми этими делами, значит Вы делаете упор на доступность.
    Для незрячего пользователя, как считаете, будет понятно что перед ним, аккордион или табы?
    Последовательность контента какая?
    Согласно wcag - между ярлыками табов можно переключаться стрелочками. Между группой аккордеонов - нет.

    И, насколько я помню, когда в фокус попадает таб, то скринридер издаёт соответствующий сигнал, что мол, доступна навигация стрелками. Это правда нужно бы перепроверить и возможно не все скринридеры это делают.

    В итоге как Вы объясните незрячему пользователю что перед ним, табы или аккордеон? Как будете разруливать навигацию по контенту? Сначала то что в аккордеоне? Или то что в табе? А потом?

    В итоге смешивание двух разных ui элементов вводит в заблуждение.

  • Вадим, ну вообще у меня скрытие контента аккордена иидет через height:0;overflow:hidden. вроде это значит что скринридеры его прочтут, а значит для них это как просто кнопка с текстом внутри + стрелками у меня есть возможность это переключать. + aria-controls будет указывать на картинку котоая меняется (но вот тут походу это лишнее)
  • godsplane, Ну дело не только в методе скрытия контента. Размечая блоки определённым образом пользователю даётся дополнительная информация о том, какой это ui элемент.
  • Вадим, ну так если слева кнопки, а справа контент переключается, почему это не табы?))
    Вот еще пример, тут тоже только картинка переключается. причем тут табы в табах, такое вообще ок?
    В мобилке тоже самое

    Может ли элементы быть одновременно role='tab'; и аккордионом (aria-expanded)?

  • godsplane, не понимаю зачем Вы призвали меня на вопрос? Чтобы донести свою точку зрения? Я свою сказал.
    Это не табы потому что картинка не контентная а на мобилке и подавно чистый аккордеон.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Мария Код Ответ

    Да, элементы могут одновременно иметь роль "tab" и быть аккордеоном с атрибутом aria-expanded. Роль "tab" используется для элементов, которые представляют собой вкладки в интерфейсе, позволяя пользователю переключаться между ними. Атрибут aria-expanded, с другой стороны, используется для определения состояния элемента аккордеона - развернут или свернут.

    Для того чтобы элемент мог одновременно иметь обе эти характеристики, необходимо правильно структурировать код и добавить соответствующие атрибуты. Например, у вкладки с ролью "tab" может быть атрибут aria-controls, указывающий на идентификатор блока, который она управляет. В свою очередь, у блока аккордеона можно добавить атрибут aria-labelledby, указывающий на идентификатор вкладки, которая его управляет.

    Пример кода на PHP:

    <div role="tab" aria-controls="accordion1" id="tab1">
      Вкладка 1
    </div>
    <div id="accordion1" aria-labelledby="tab1" aria-expanded="true">
      Содержимое аккордеона 1
    </div>
     
    <div role="tab" aria-controls="accordion2" id="tab2">
      Вкладка 2
    </div>
    <div id="accordion2" aria-labelledby="tab2" aria-expanded="false">
      Содержимое аккордеона 2
    </div>

    <div role="tab" aria-controls="accordion1" id="tab1"> Вкладка 1 </div> <div id="accordion1" aria-labelledby="tab1" aria-expanded="true"> Содержимое аккордеона 1 </div> <div role="tab" aria-controls="accordion2" id="tab2"> Вкладка 2 </div> <div id="accordion2" aria-labelledby="tab2" aria-expanded="false"> Содержимое аккордеона 2 </div>

    В данном примере у нас есть две вкладки (элементы с ролью "tab") и соответствующие им блоки аккордеона. Каждая вкладка управляет своим блоком аккордеона, и при этом блоки могут быть развернуты или свернуты с помощью атрибута aria-expanded.

    Таким образом, элементы могут одновременно иметь роль "tab" и быть аккордеоном с атрибутом aria-expanded, что позволяет создавать более интерактивные и удобные пользовательские интерфейсы.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно