:focus
selektor:focus
Działa na element, który właśnie przyjmuje wpisywanie z klawiatury: pole formularza, w które użytkownik pisze, albo link czy przycisk wybrany klawiszem Tab. Fokus ma na stronie zawsze najwyżej jeden element.
Wartości
Fokus mogą dostać:
- linki z atrybutem
href, przyciski, pola formularza,<summary>i elementy zcontenteditable, - każdy element z
tabindex="0"(także klawiszem Tab) albotabindex="-1"(tylko skryptem przezfocus()).
Przykłady
Pole, w które się pisze, ma niebieską ramkę i jasny kontur:
<input class="field" type="text" placeholder="Imię i nazwisko">
.field {
padding: 8px;
border: 1px solid #aaa;
border-radius: 4px;
}
.field:focus {
border-color: #0088d1;
outline: 3px solid #b3e5fc;
}
Na co uważać
- Nigdy nie zapisuj
:focus { outline: none; }bez zastępstwa – użytkownicy klawiatury nie zobaczą wtedy, gdzie na stronie się znajdują (WCAG 2.4.7). :focusdziała też po kliknięciu myszą, gdzie mało kto chce kontur na przycisku. Wyraźny kontur należy więc raczej do:focus-visible.- To, czy kliknięcie myszą daje fokus przyciskowi lub linkowi, zależy od przeglądarki i systemu – w macOS według MDN nie dają go ani Safari, ani Firefox. Po kliknięciu nie polegaj więc na
:focus. - Element, który nie może mieć fokusu (
div,spanbeztabindex), nie dostanie:focusnawet pofocus()ze skryptu.
Obsługa w przeglądarkach
Baseline – szeroko dostępne: działa we wszystkich popularnych przeglądarkach, i to od dawna (najpóźniej od 2015 roku). Od wersji: Chrome 1, Firefox 1, Safari 1. Stan: październik 2026 (MDN browser-compat-data).
Zobacz też:
:focus-visible
:focus-within
outline
outline-offset
:hover