Ответ 1
Обновление 2017 года
Как отмечает @Wallop в комментариях, свойство nav-index
было исключено из спецификации в 2015 году из-за "отсутствия интереса к реализации".
Взгляните на свойство nav-index
, представленное W3C в CSS3-UI.
Это свойство в точности соответствует поведению tabindex
и применимо к любому элементу.
Свойство nav-index является нейтральным для метода ввода способом задания последовательного порядка навигации (также известного как "порядок табуляции"). Это свойство заменяет атрибут HTML4/XHTML1 ‘tabindex
Будучи, вероятно, лучшим стандартом-решением для данного сценария использования, nav-index
до сих пор интерпретируется только Opera (по состоянию на июнь 2012 года) и также помечена W3C как "Функция, подверженная риску", поэтому может быть удалена в любое время.
Альтернативные кросс-браузерные решения:
не соответствует стандартам: установите атрибут
tabindex
наDIV
. Это будет работать во всех распространенных браузерах.Соответствует стандартам: замените
DIV
на элемент привязки (A
) без установленного атрибутаhref
, добавьте в стильdisplay: block
и добавьте атрибутtabindex
.
Что касается точки зрения BoltClock, я согласен с тем, что порядок табуляции очень логичен (и порядок выбора текста, и порядок табуляции тесно связаны с последовательностью расположения элементов в документе). С другой стороны, сегодня CSS имеет более широкое назначение. Он может манипулировать не только содержимым документа (свойство content
), но и поведением, когда и если события должны запускаться: то есть, используя pointer-events
, display
или z-index
, изменится порядок событий указателя. Если это очень простые CSS-свойства, почему вы тоже не можете влиять на KeyBoardEvents?