Я использую версию 2.4.0 react-bootstrap и компонент Tab. Я хочу, чтобы веб-сайт был доступен с помощью навигации по вкладкам, но когда я использую компонент вкладок, фокус устанавливается только на элемент активной вкладки и никогда не попадает на другие вкладки.
<Tabs
className = "mb-3"
defaultActiveKey = "A"
mountOnEnter = {true}
unmountOnExit = {true} >
<Tab eventKey = "A" title = "A">
<A/>
</Tab>
<Tab eventKey = "B" title = "B">
<B/>
</Tab>
<Tab eventKey = "C" title = "C">
<C/>
</Tab>
</Tabs>
Я заметил, что когда страница отображается, все остальные вкладки (не активные) имеют tabindex = "-1"
на кнопке этой вкладки, что делает их недоступными для навигации по вкладкам.
Вот как выглядит DOM после того, как react-bootstrap сгенерировал свой HTML. Вы можете видеть, что первая кнопка вкладки (активная) не имеет атрибута tabindex = "-1"
. Другие кнопки имеют это, поэтому, когда я использую навигацию по вкладкам, они никогда не получают фокуса, и я никогда не могу на них щелкнуть.
<ul class = "mb-3 nav-tabs nav nav-tabs" role = "tablist">
<li class = "nav-item" role = "presentation">
<button type = "button" id = "react-aria2325882265-4-tab-A" role = "tab" data-rr-ui-event-key = "A" aria-selected = "true" class = "nav-link active" aria-controls = "react-aria2325882265-4-tabpane-A">A</button>
</li>
<li class = "nav-item" role = "presentation">
<button type = "button" id = "react-aria2325882265-4-tab-B" role = "tab" data-rr-ui-event-key = "B" aria-selected = "false" tabindex = "-1" class = "nav-link">B</button>
</li>
<li class = "nav-item" role = "presentation">
<button type = "button" id = "react-aria2325882265-4-tab-C" role = "tab" data-rr-ui-event-key = "C" aria-selected = "false" class = "nav-link" tabindex = "-1">C</button>
</li>
</ul>
Как я могу использовать компонент вкладки Bootstrap и сделать его доступным с помощью навигации по вкладкам?
Я видел, что если я использую компонент Nav, у него нет этой проблемы, потому что он не помещает tabindex = "-1"
на a tag
, который генерируется react-bootstrap. Однако я не могу использовать компонент Nav, потому что у меня нет ссылки для перехода, но есть компонент для рендеринга, и именно для этого используется компонент вкладки.
Да! это работает спасибо! Еще одна проблема: я использую выравнивание rtl, но когда я нажимаю клавишу со стрелкой влево, выбирается вкладка справа. Вы знаете, как я могу это исправить?
Боюсь, я не знаю, я вообще не знаю эту библиотеку.
Вы установили <html dir = "rtl">
, как описано в документации RTL?
Да, я сделал, но это не помогает. Должен ли я открыть новый вопрос об этом?
Нет, я думаю, вам нужно создать запрос функции на React-Bootstrap. Это просто не поддерживается в настоящее время.
Ожидаемое поведение вкладок в соответствии с практическими рекомендациями ARIA (APG) заключается в том, что клавиши со стрелками на клавиатуре меняют фокус внутри этого составного компонента.
В зависимости от визуального представления вкладок клавиши со стрелками влево и вправо используются для горизонтального расположения, вверх и вниз — для вертикального.
Компонент вкладок React-Bootstrap реализует клавиши со стрелками, но позволяет перемещаться по вкладкам как вверх/вниз, так и влево/вправо.
стандартный способ навигации с помощью клавиатуры с вкладками заключается в том, что клавиша Tab позволяет перейти только к текущей активной вкладке, а клавиши со стрелками влево/вправо затем перемещаются между вкладками. См. например mdn . Вы пробовали это?