:focus-visible
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since маÑÑ 2022 г..
ÐÑевдоклаÑÑ :focus-visible пÑименÑеÑÑÑ, в Ñо вÑÐµÐ¼Ñ ÐºÐ°Ðº ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑооÑвеÑÑÑвÑÐµÑ Ð¿ÑевдоклаÑÑÑ :focus, и UA (User Agent) опÑеделÑÐµÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑвÑиÑÑики, ÑÑо ÑокÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ бÑÑÑ Ñделан оÑевиднÑм Ð´Ð»Ñ ÑлеменÑа.
ÐÑÐ¾Ñ ÑелекÑÐ¾Ñ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ Ð¿ÑедоÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð´ÑÑгого индикаÑоÑа ÑокÑÑа, оÑнованного на модалÑноÑÑи ввода полÑзоваÑÐµÐ»Ñ (мÑÑÑ Ð¿ÑоÑив клавиаÑÑÑÑ).
СинÑакÑиÑ
Error: could not find syntax for this itemÐÑимеÑ
>ÐазовÑй пÑимеÑ
Ð ÑÑом пÑимеÑе ÑелекÑÐ¾Ñ :focus-visible иÑполÑзÑÐµÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ðµ UA, ÑÑÐ¾Ð±Ñ Ð¾Ð¿ÑеделиÑÑ, когда ÑооÑвеÑÑÑвоваÑÑ. СÑавниÑе, ÑÑо пÑоиÑÑ
одиÑ, когда Ð²Ñ ÑÑлкаеÑе мÑÑÑÑ Ð¿Ð¾ ÑазнÑм ÑлеменÑам ÑпÑавлениÑ, и ÑÑо пÑоиÑÑ
Ð¾Ð´Ð¸Ñ Ð¿Ñи пеÑеÑ
оде по ним Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ. ÐбÑаÑиÑе внимание на ÑазниÑÑ Ð² поведении ÑлеменÑов, оÑоÑмленнÑÑ
Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ :focus.
<input value="Default styles" /><br />
<button>Default styles</button><br />
<input class="focus-only" value=":focus only" /><br />
<button class="focus-only">:focus only</button><br />
<input class="focus-visible-only" value=":focus-visible only" /><br />
<button class="focus-visible-only">:focus-visible only</button>
input,
button {
margin: 10px;
}
.focus-only:focus {
outline: 2px solid black;
}
.focus-visible-only:focus-visible {
outline: 4px dashed darkorange;
}
ÐÑбоÑоÑное оÑобÑажение индикаÑоÑа ÑокÑÑиÑовки
ÐолÑзоваÑелÑÑкий ÑÐ»ÐµÐ¼ÐµÐ½Ñ ÑпÑавлениÑ, Ñакой как кнопка наÑÑÑаиваемого ÑлеменÑа, Ð¼Ð¾Ð¶ÐµÑ Ð¸ÑполÑзоваÑÑ: focus-visible Ð´Ð»Ñ Ð²ÑбоÑоÑного пÑÐ¸Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¸Ð½Ð´Ð¸ÐºÐ°ÑоÑа ÑокÑÑа ÑолÑко к ÑокÑÑÑ ÐºÐ»Ð°Ð²Ð¸Ð°ÑÑÑÑ. ÐÑо ÑооÑвеÑÑÑвÑÐµÑ ÑобÑÑÐ²ÐµÐ½Ð½Ð¾Ð¼Ñ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ ÑокÑÑа Ð´Ð»Ñ ÑакиÑ
ÑлеменÑов ÑпÑавлениÑ, как <button>.
<custom-button tabindex="0" role="button">Click Me</custom-button>
custom-button {
display: inline-block;
margin: 10px;
}
custom-button:focus {
/* ÐбеÑпеÑÑÑе ÑезеÑвнÑй ÑÑÐ¸Ð»Ñ Ð´Ð»Ñ Ð±ÑаÑзеÑов,
коÑоÑÑе не поддеÑживаÑÑ: focus-visible */
outline: none;
background: lightgrey;
}
custom-button:focus:not(:focus-visible) {
/* Remove the focus indicator on mouse-focus for browsers
that do support :focus-visible */
background: transparent;
}
custom-button:focus-visible {
/* Draw a very noticeable focus style for
keyboard-focus on browsers that do support
:focus-visible */
outline: 4px dashed darkorange;
background: transparent;
}
Polyfill
You can polyfill :focus-visible using focus-visible.js.
Accessibility concerns
>Low vision
Make sure the visual focus indicator can be seen by people with low vision. This will also benefit anyone use a screen in a brightly lit space (like outside in the sun). WCAG 2.1 SC 1.4.11 Non-Text Contrast requires that the visual focus indicator be at least 3 to 1.
- Accessible Visual Focus Indicators: Give Your Site Some Focus! Tips for Designing Useful and Usable Focus Indicators
Cognition
It may not be obvious as to why the focus indicator is appearing and disappearing if a person is using mixed forms of input. For users with cognitive concerns, or who are less technologically literate, this lack of consistent behavior for interactive elements may be confusing.
СпеÑиÑикаÑии
| Specification |
|---|
| Selectors Level 4 > # the-focus-visible-pseudo > |