«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как реализовать стили фокусировки только с клавиатуры, используя :focus-visible?

Как реализовать стили фокусировки только с клавиатуры, используя :focus-visible?

Опубликовано 7 ноября 2024 г.
Просматривать:317

How Can You Implement Keyboard-Only Focus Styles Using :focus-visible?

Стили фокусировки, доступные только для клавиатуры, в современных браузерах

В современных браузерах псевдокласс :focus-visible можно использовать для достижения клавиатуры. только стили фокуса. Этот псевдокласс соответствует элементам, находящимся в фокусе, когда пользователь взаимодействует со страницей с помощью клавиатуры или другого неуказательного устройства, указывая фокус, когда это помогает пользователю. В результате кольца фокусировки подавляются, когда пользователь взаимодействует с помощью щелчка или касания.

Пользовательский стиль фокуса с помощью :focus-visible

Чтобы реализовать пользовательские стили фокуса с сохранением совместимости со старыми браузерами, используйте следующий подход:

button:focus {
  /* Default focus styles */
}

button:focus:not(:focus-visible) {
  /* Undo default focus styles */
}

В браузерах, поддерживающих :focus-visible, второе правило переопределяет стили фокуса, определенные в первом правиле, когда :focus-visible неактивен. Это гарантирует, что стили фокуса будут применяться только тогда, когда :focus-visible активен.

Оригинальное решение для старых браузеров

Для браузеров, которые не поддерживают :focus-visible, альтернативный подход предполагает использование дополнительного элемента внутри каждого фокусируемого элемента, как предложено в статье Романа Комарова:

/* Root button styling */
.btn {
  all: initial;
  display: inline-block;
}

/* Inner content element */
.btn__content {
  background: orange;
  cursor: pointer;
  display: inline-block;
}

/* Custom focus styles on inner element */
.btn:focus > .btn__content {
  box-shadow: 0 0 2px 2px #51a7e8;
  color: lime;
}

При размещении стилей фокуса на внутреннем элементе и удалении контуров по умолчанию как на родительском, так и на внутренних элементах после добавления пользовательского стиля фокуса, стили фокуса применяются только при взаимодействии с клавиатурой к основному видимому элементу.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3