Псевдокласс :focus-visible
Псевдокласс :focus-visible используется для применения стилей к элементу, который получил фокус, но когда переход к элементу происходит с помощью клавиатуры. Это позволяет избежать появления браузерных стилей в случае, если пользователь их не ожидает.
По своему действию похож на псевдокласс :focus, но есть некоторые отличия.
- :focus работает для получивших фокус элементов без каких-либо оговорок и условий. Это значит, что не имеет значения, каким образом элемент получил фокус — :focus сработает всегда.
- :focus-visible работает при определённых условиях — браузер определяет, как элемент получил фокус и в зависимости от этого применяет стили или нет. К примеру, при использовании мыши текстовые поля стилизуются, а кнопки нет. При получении фокуса с помощью клавиатуры стилизуется и кнопка.
Синтаксис
Селектор:focus-visible { … }
Пример
Код примера скопирован в буфер
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="utf-8"> <title>:focus-visible</title> <style> .b1:focus { outline: 2px solid orange; /* Оранжевый контур */ } .b2:focus-visible { outline: 2px solid green; /* Зелёный контур */ } </style> </head> <body> <p>Кнопки с :focus</p> <p><button class="b1">Кнопка</button> <button class="b1">Кнопка</button> <button class="b1">Кнопка</button></p> <p>Кнопки с :focus-visible</p> <p><button class="b2">Кнопка</button> <button class="b2">Кнопка</button> <button class="b2">Кнопка</button></p> </body> </html>
В данном примере если щёлкнуть по кнопке из первой группы, то вокруг кнопки отображается оранжевый контур. Кнопки из второй группы при щелчке контуром не выделяются. При переходе к кнопке с помощью клавиши Tab, кнопка выделяется контуром соответствующего цвета.
Спецификация
Браузеры
86 | 86 | 72 | 15.4 | 85 |
86 | 85 | 61 | 15.4 |