В проекте стандарта HTML5 требуется только, чтобы элемент был "фокусируемым" там, где фокусировка означает:
Элемент является фокусируемым, если поведение агента пользователя по умолчанию позволяет ему
быть фокусируемым или если элемент является специально фокусируемым, но только если
элемент либо визуализируется, либо является потомком холста
элемент, который представляет встроенный контент.
Пользовательские агенты должны сделать фокусируемыми следующие элементы, если соглашения платформы не предписывают иное:
a
элементов с атрибутом href
link
элементы, имеющие атрибут href
button
элементы, которые не отключены
input
элементов, атрибут type которых не находится в состоянии Hidden и которые не отключены
select
элементы, которые не отключены
textarea
элементы, которые не отключены
command
элементы, у которых нет отключенного атрибута
- Элементы с установленным атрибутом
draggable
, если это позволило бы пользовательскому агенту позволить пользователю начать операции перетаскивания для этих
элементы без использования указательного устройства
- Редактирование хостов
- Просмотр контекстных контейнеров
Он говорит «но только если элемент либо визуализируется ...», а стандарт определяет «визуализированный» как:
Элемент визуализируется, если он находится в документе, либо его родитель
сам узел визуализируется или это узел документа, и это
явно не исключены из рендеринга с помощью:
- значение свойства none для CSS 'none' или
- значение 'схлопывания' свойства 'видимости', если оно не рассматривается как эквивалентное 'скрытому' значению, или
- некоторый эквивалент в других языках стилей.
Просто быть за кадром не означает, что элемент не отображается. Наличие скрытого атрибута обычно означает
элемент не отображается, хотя это может быть переопределено
таблицы стилей.
Пользовательские агенты, которые не соблюдают таблицы стилей CSS уровня автора, тем не менее должны действовать так, как если бы они применяли правила CSS, приведенные в
эти разделы в соответствии с настоящей спецификацией и
соответствующие спецификации CSS и Unicode.
Короче говоря, ответ, как представляется, заключается в том, что если все другие требования будут выполнены, то display:none
не будет сфокусирован, но display:hidden
будет - при условии, что все браузеры действительно следуют спецификации.