:focus-visible
Pseido-klase (pazīstama arī kā "Focus-norādīja" pseido-klases), ir dzimtā CSS veids, stila elementus, kas:
- Ir uzmanības centrā
- Nepieciešams redzams indikators, lai parādītu fokusu (vairāk par to vēlāk)
:focus-visible
tiek izmantots līdzīgi kā :focus
: lai pievērstu uzmanību elementam, kuram pašlaik ir fokuss.
.element:focus-visible ( background-color: pink; /* Something to get the user's attention */ )
:focus-visible
ir daļa no CSS4 Selectors darba projekta. Pirms pieņemšanas Mozilla ieviesa :-moz-focusring
pseidoklasi, lai Firefox funkcionalitāte tiktu ieviesta pirms formālās specifikācijas.
Kāpēc mums vajadzīgs: redzams fokusā?
Vai :focus
tas jau nedara? Jā, bet ir problēmas. Visskaidrākā ilustrācija ir poga, kas iedarbina JavaScript. Iedomājieties attēlu karuseli ar pogām, lai pārslēgtos starp attēliem. Pieņemsim, ka esat pievienojis tabindex
pogām a, lai tās varētu izvēlēties, izmantojot tastatūru, bet, dodoties ar peli pārbaudīt karuseli, ap savu krāšņo pogu redzat šo kontūru:

:focus
Ne tāpēc, ka jūs to vēlētos darīt (saistībā ar pieejamības problēmām), bet kā no tā atbrīvoties? Iestatot :focus
pseidoklasi:
.next-image-button:focus ( outline: none; )
Tagad poga izskatās lieliski, kad tā ir fokusā, bet kas notiek, ja lietotājs pāriet uz jūsu pogas bez peles, bet tā vietā ir tastatūra? Viņi nevar redzēt, kur viņi ir ielikuši tabu! Tā ir problēma, jo tagad nav iespējas pateikt, kura poga ir fokusēta tastatūras darbībām:

Vai ir veids, kā noņemt zilo fokusa kontūru, bet tomēr parādīt fokusu, kas vairāk atbilst vietnes dizainam? Protams, jūs varat saņemt savu kūku un arī to ēst, pateicoties :focus-visible
!
:focus-visible
attiecas tikai tad, ja jūs patiešām vēlaties, lai vizuālais indikators palīdzētu lietotājam redzēt, kur ir fokuss. Citiem vārdiem sakot, tas nevar paslēpt kontūru, piemēram, :focus
var. (Nu, tas varētu būt, sajaucot to dizainā, bet neatkarīgi no tā.) Šajā ziņā abi ir jāizmanto kopā. Pievienosim vienu savai pogai:
.next-image-button:focus ( outline: none; ) .next-image-button:focus-visible ( outline: 3px solid blanchedalmond; /* That'll show 'em */ )
Kad tastatūra tiek izmantota, lai pārietu uz pogu, fokusa vizuālā norāde:

:focus-visible
padara fokusu redzamu!
Kā pārlūkprogrammas nosaka, kad kaut kas ir: redzams fokusā?
Pārlūkprogrammām tiek dota nedaudz rīcības brīvības, lai noteiktu, kad šis pseido-selektors jāpielieto attiecīgajam elementam, izmantojot viņu pašu heiristiku. Vispirms apskatīsim CSS4 darba melnrakstu un pēc tam mēģināsim to sadalīt. No specifikācijām:
- Ja lietotājs ir izteicis vēlmi (piemēram, izmantojot sistēmas preferenci vai pārlūkprogrammas iestatījumu), lai vienmēr redzētu redzamu fokusa indikatoru, lietotāja aģentam tas būtu jāievēro, norādot, ka: fokusam redzamais vienmēr sakrīt ar aktīvo elementu, neatkarīgi no jebkura cita faktori. (Cita iespēja var būt tā, ka lietotāja aģents parāda savu fokusa indikatoru neatkarīgi no autora stiliem.)
- Jebkuram elementam, kas atbalsta tastatūras ievadi (piemēram, ievades elementam vai jebkuram citam elementam, kas var izraisīt virtuālās tastatūras rādīšanu fokusā, ja fiziskās tastatūras nav), vienmēr jāatbilst: fokusam redzams, kad fokusēts.
- Ja lietotājs mijiedarbojas ar lapu, izmantojot tastatūru, pašlaik fokusētajam elementam jāatbilst: focus-visible (ti, tastatūras lietošana var mainīt, vai šī pseidoklase sakrīt, pat ja tas neietekmē: focus).
- Ja lietotājs mijiedarbojas ar lapu, izmantojot rādītājierīci tā, ka fokuss tiek pārvietots uz jaunu elementu, kas neatbalsta lietotāja ievadi, tikko fokusētais elements nedrīkst sakrist: focus-visible.
- Ja aktīvais elements sakrīt: focus-visible, un skripts liek fokusam pārvietoties citur, tikko fokusētajam elementam jāatbilst: focus-visible.
- Un otrādi, ja aktīvais elements nesakrīt: redzams fokusā, un skripts liek fokusam pārvietoties citur, jauni fokusētais elements nedrīkst sakrist: fokuss-redzams.
Ja tas ir nedaudz abstrakts, šeit ir interpretācija:
Situācija | Vai tiek piemērots fokusā redzamais? |
---|---|
Lietotājs saka, ka vienmēr vēlas, lai fokuss būtu redzams, izmantojot iestatījumu | Jā |
Lai darbotos, elementam ir nepieciešama tastatūra (piemēram, teksts) | Jā |
Lietotājs pārvietojas ar tastatūru | Jā |
Lietotājs pārvietojas ar rādītājierīci (piemēram, peli vai pirkstu uz skārienekrāna) | Nē |
Skripts liek fokusam pāriet no :focus-visible elementa uz citu | Jā |
Skripts liek fokusam pāriet no :focus-visible elementa uz citu | Nē |
Tas atkārtojas: šīs ir vadlīnijas, un pārlūkprogrammas varēs pašas noteikt, ko atlasījis :focus-visible
. Mēs varam sagaidīt, ka acīmredzamais tastatūras navigācijas gadījums tiks risināts paredzamā veidā, taču pārlūkprogrammām ir iespēja pašiem noteikt, tāpat kā jebkurai citai funkcijai.
Pārlūkprogrammas atbalsts
Šie pārlūka atbalsta dati ir no Caniuse, kurai ir sīkāka informācija. Cipars norāda, ka pārlūks atbalsta šo un jaunākās versijas funkciju.
Darbvirsma
Chrome | Firefox | IE | Mala | Safari |
---|---|---|---|---|
86 | 4 * | Nē | 86 | Nē |
Mobilais / planšetdators
Android Chrome | Android Firefox | Android | iOS Safari |
---|---|---|---|
88 | 85 | 81. | Nē |
Papildus informācija
- CSS selektoru 4 specifikācija
- Bugzilla biļete # 1445482
- WebKit biļete # 185859
- WICG
:focus-visible
skaidrojums par polifillu - Patrick H. Lauke apraksts un izmantošana
:focus-visible
- Koncentrēšanās uz fokusa stāvokļiem
Saistītie atlasītāji
Almanahs 2021. gada 15. februārī: fokuss
textarea:focus ( background: pink; )
: fokusā redzamais fokuss 

