Visaptveroša rokasgrāmata par koka skata pieejamību, ietverot ARIA lomas, tastatūras navigāciju, labāko praksi un pārlūku saderību labākai lietotāja pieredzei.
Koka skats: hierarhisko datu navigācijas pieejamība
Koka skati ir būtiski lietotāja saskarnes (UI) komponenti hierarhisku datu attēlošanai. Tie ļauj lietotājiem intuitīvi pārvietoties pa sarežģītām struktūrām, piemēram, failu sistēmām, organizāciju shēmām vai vietņu izvēlnēm. Tomēr slikti ieviests koka skats var radīt būtiskus pieejamības šķēršļus, īpaši lietotājiem ar invaliditāti, kuri paļaujas uz palīgtehnoloģijām, piemēram, ekrāna lasītājiem un tastatūras navigāciju. Šis raksts sniedz visaptverošu ceļvedi par pieejamu koka skatu projektēšanu un ieviešanu, nodrošinot pozitīvu lietotāja pieredzi ikvienam.
Izpratne par koka skata struktūru
Koka skats datus attēlo hierarhiskā, izvērstā/sakļautā formātā. Katram mezglam kokā var būt bērnmezgli, veidojot zarus un apakšzarus. Augstāko mezglu sauc par saknes mezglu. Pamatstruktūras izpratne ir kritiski svarīga, pirms iedziļināties pieejamības apsvērumos.
Šeit ir izklāsts par biežākajiem koka skata elementiem:
- Koks: Kopējais konteinera elements, kas satur visu koka struktūru.
- Koka elements (Treeitem): Pārstāv vienu mezglu kokā. Tas var būt zars (izvēršams/sakļaujams) vai lapa (bez bērniem).
- Grupa (Group): (Neobligāti) Konteiners, kas vizuāli grupē bērnmezglus vecākmezgla ietvaros.
- Pārslēdzējs/atvēršanas ikona: Vizuāls indikators (piemēram, plusa vai mīnusa zīme, bultiņa), kas ļauj lietotājiem izvērst vai sakļaut zaru.
- Etiķete (Label): Teksts, kas tiek parādīts katram koka elementam.
ARIA lomu un atribūtu nozīme
Pieejamas bagātinātas interneta lietojumprogrammas (ARIA) ir atribūtu komplekts, kas pievieno semantisku nozīmi HTML elementiem, padarot tos saprotamus palīgtehnoloģijām. Veidojot koka skatus, ARIA lomas un atribūti ir būtiski, lai ekrāna lasītājiem paziņotu par koka struktūru un uzvedību.
Būtiskākās ARIA lomas:
role="tree"
: Piemēro konteinera elementam, kas pārstāv visu koku. Tas informē palīgtehnoloģijas, ka elements satur hierarhisku sarakstu.role="treeitem"
: Piemēro katram mezglam kokā. Tas identificē katru mezglu kā koka elementu.role="group"
: Piemēro konteinera elementam, kas vizuāli grupē bērnmezglus. Lai gan ne vienmēr nepieciešams, tas var uzlabot semantiku.
Galvenie ARIA atribūti:
aria-expanded="true|false"
: Piemēro koka elementiem, kuriem ir bērni. Norāda, vai zars pašlaik ir izvērsts (true
) vai sakļauts (false
). Dinamiski atjauniniet šo atribūtu, izmantojot JavaScript, kad lietotājs izvērš vai sakļauj mezglu.aria-selected="true|false"
: Piemēro koka elementiem, lai norādītu, vai mezgls pašlaik ir atlasīts. Vienlaikus vajadzētu būt atlasītam tikai vienam mezglam (ja vien jūsu lietojumprogramma nepieprasa vairāku elementu atlasi, tādā gadījumā izmantojietaria-multiselectable="true"
uzrole="tree"
elementa).aria-label="[etiķetes teksts]"
vaiaria-labelledby="[etiķetes elementa ID]"
: Nodrošina aprakstošu etiķeti kokam vai atsevišķiem koka elementiem. Izmantojietaria-label
, ja etiķete nav vizuāli redzama; pretējā gadījumā izmantojietaria-labelledby
, lai saistītu koka elementu ar tā vizuālo etiķeti.tabindex="0"
: Piemēro sākotnēji fokusētajam koka elementam (parasti pirmajam). Izmantojiettabindex="-1"
visiem pārējiem koka elementiem, līdz tie tiek fokusēti (piemēram, ar tastatūras navigāciju). Tas nodrošina pareizu tastatūras navigācijas plūsmu.
ARIA ieviešanas piemērs:
Šeit ir pamata piemērs, kā strukturēt koka skatu ar ARIA atribūtiem:
<ul role="tree" aria-label="File System">
<li role="treeitem" aria-expanded="true" aria-selected="false" tabindex="0">
<span>Root Folder</span>
<ul role="group">
<li role="treeitem" aria-expanded="false" aria-selected="false" tabindex="-1">
<span>Folder 1</span>
<ul role="group">
<li role="treeitem" aria-selected="false" tabindex="-1"><span>File 1.txt</span></li>
<li role="treeitem" aria-selected="false" tabindex="-1"><span>File 2.txt</span></li>
</ul>
</li>
<li role="treeitem" aria-selected="false" tabindex="-1"><span>Folder 2</span></li>
</ul>
</li>
</ul>
Tastatūras navigācija
Tastatūras navigācija ir ārkārtīgi svarīga lietotājiem, kuri nevar izmantot peli. Labi izstrādātam koka skatam jābūt pilnībā navigējamam, izmantojot tikai tastatūru. Šeit ir standarta tastatūras mijiedarbības:
- Bultiņa uz augšu: Pārvieto fokusu uz iepriekšējo mezglu kokā.
- Bultiņa uz leju: Pārvieto fokusu uz nākamo mezglu kokā.
- Bultiņa pa kreisi:
- Ja mezgls ir izvērsts, sakļauj mezglu.
- Ja mezgls ir sakļauts vai tam nav bērnu, pārvieto fokusu uz mezgla vecāku.
- Bultiņa pa labi:
- Ja mezgls ir sakļauts, izvērš mezglu.
- Ja mezgls ir izvērsts, pārvieto fokusu uz pirmo bērnu.
- Home: Pārvieto fokusu uz pirmo mezglu kokā.
- End: Pārvieto fokusu uz pēdējo redzamo mezglu kokā.
- Atstarpes taustiņš vai Enter: Atlasa fokusēto mezglu (ja tiek atbalstīta atlase).
- Rakstīšana (burts vai cipars): Pārvieto fokusu uz nākamo mezglu, kas sākas ar ierakstīto rakstzīmi. Turpina meklēšanu ar katru nākamo taustiņspiedienu.
- Pluss (+): Izvērš pašlaik fokusēto mezglu (līdzvērtīgi bultiņai pa labi, kad mezgls ir sakļauts).
- Mīnuss (-): Sakļauj pašlaik fokusēto mezglu (līdzvērtīgi bultiņai pa kreisi, kad mezgls ir izvērsts).
- Zvaigznīte (*): Izvērš visus mezglus pašreizējā līmenī (nav universāli atbalstīts, bet bieži vien noderīgi).
JavaScript ieviešana tastatūras navigācijai:
Jums būs nepieciešams JavaScript, lai apstrādātu tastatūras notikumus un attiecīgi atjauninātu fokusu. Šeit ir vienkāršots piemērs:
const tree = document.querySelector('[role="tree"]');
const treeitems = document.querySelectorAll('[role="treeitem"]');
tree.addEventListener('keydown', (event) => {
const focusedElement = document.activeElement;
let nextElement;
switch (event.key) {
case 'ArrowUp':
event.preventDefault(); // Novērš lapas ritināšanu
// Loģika, lai atrastu iepriekšējo koka elementu (nepieciešama DOM apstaigāšana)
// ...
nextElement = findPreviousTreeitem(focusedElement);
break;
case 'ArrowDown':
event.preventDefault();
// Loģika, lai atrastu nākamo koka elementu
// ...
nextElement = findNextTreeitem(focusedElement);
break;
case 'ArrowLeft':
event.preventDefault();
if (focusedElement.getAttribute('aria-expanded') === 'true') {
// Sakļaut mezglu
focusedElement.setAttribute('aria-expanded', 'false');
} else {
// Pārvietot fokusu uz vecāku
nextElement = findParentTreeitem(focusedElement);
}
break;
case 'ArrowRight':
event.preventDefault();
if (focusedElement.getAttribute('aria-expanded') === 'false') {
// Izvērst mezglu
focusedElement.setAttribute('aria-expanded', 'true');
} else {
// Pārvietot fokusu uz pirmo bērnu
nextElement = findFirstChildTreeitem(focusedElement);
}
break;
case 'Home':
event.preventDefault();
nextElement = treeitems[0];
break;
case 'End':
event.preventDefault();
nextElement = treeitems[treeitems.length - 1];
break;
case ' ': // Atstarpes taustiņš
case 'Enter':
event.preventDefault();
// Loģika, lai atlasītu fokusēto mezglu
selectNode(focusedElement);
break;
default:
// Apstrādāt rakstzīmju ievadi, lai naviģētu uz mezgliem, kas sākas ar šo rakstzīmi
break;
}
if (nextElement) {
focusedElement.setAttribute('tabindex', '-1');
nextElement.setAttribute('tabindex', '0');
nextElement.focus();
}
});
Svarīgi apsvērumi tastatūras navigācijas ieviešanai:
- Fokusa pārvaldība: Vienmēr nodrošiniet, ka tikai vienam koka elementam ir
tabindex="0"
. Pārvietojot fokusu, attiecīgi atjauniniettabindex
atribūtus. - DOM apstaigāšana: Efektīvi apstaigājiet DOM, lai atrastu nākamos un iepriekšējos koka elementus, vecākmezglus un bērnmezglus. Apsveriet iespēju izmantot palīgfunkcijas, lai vienkāršotu šo procesu.
- Notikumu novēršana: Izmantojiet
event.preventDefault()
, lai novērstu pārlūkprogrammas noklusējuma darbības (piemēram, ritināšanu), apstrādājot bultiņu taustiņus. - Rakstzīmju ievade: Ieviesiet loģiku rakstzīmju ievades apstrādei, ļaujot lietotājiem ātri pārvietoties uz mezgliem, kas sākas ar konkrētu rakstzīmi. Saglabājiet pēdējā taustiņspiediena laiku, lai izlemtu, kad meklēšanas virkne ir jānotīra.
Vizuālais dizains un pieejamība
Vizuālajam dizainam ir izšķiroša loma koka skatu lietojamībā un pieejamībā. Šeit ir dažas vadlīnijas:
- Skaidra vizuālā hierarhija: Izmantojiet atkāpes un vizuālus norādījumus (piemēram, dažādas ikonas mapēm un failiem), lai skaidri norādītu koka hierarhiju.
- Pietiekams krāsu kontrasts: Nodrošiniet pietiekamu krāsu kontrastu starp tekstu un fonu, kā arī starp dažādiem koka skata elementiem. Izmantojiet rīkus, piemēram, WebAIM Contrast Checker, lai pārbaudītu kontrasta attiecības.
- Fokusa indikācija: Nodrošiniet skaidru un redzamu fokusa indikatoru pašlaik fokusētajam koka elementam. Tas ir būtiski tastatūras lietotājiem. Nepaļaujieties tikai uz krāsu; apsveriet iespēju izmantot apmali, kontūru vai fona krāsas maiņu.
- Izvēršanas/sakļaušanas indikatori: Izmantojiet skaidras un saprotamas ikonas izvēršanas/sakļaušanas indikatoriem (piemēram, plusa/mīnusa zīmes, bultiņas). Pārliecinieties, ka šīm ikonām ir pietiekams kontrasts un tās ir pietiekami lielas, lai uz tām būtu viegli noklikšķināt.
- Neizmantojiet tikai krāsu informācijas nodošanai: Nepaļaujieties tikai uz krāsu, lai norādītu koka elementa stāvokli (piemēram, atlasīts, izvērsts, kļūda). Nodrošiniet alternatīvus vizuālus norādījumus, piemēram, teksta etiķetes vai ikonas.
Ekrāna lasītāju apsvērumi
Ekrāna lasītāju lietotāji paļaujas uz ARIA atribūtiem un tastatūras navigāciju, lai saprastu un mijiedarbotos ar koka skatiem. Šeit ir daži galvenie apsvērumi ekrāna lasītāju pieejamībai:
- Aprakstošas etiķetes: Izmantojiet
aria-label
vaiaria-labelledby
, lai nodrošinātu aprakstošas etiķetes kokam un atsevišķiem koka elementiem. Šīm etiķetēm jābūt kodolīgām un informatīvām. - Stāvokļa paziņojumi: Pārliecinieties, ka stāvokļa izmaiņas (piemēram, mezgla izvēršana/sakļaušana, mezgla atlasīšana) ekrāna lasītājs pareizi paziņo. To panāk, pareizi atjauninot
aria-expanded
unaria-selected
atribūtus. - Hierarhijas paziņojumi: Ekrāna lasītājiem jāpaziņo katra mezgla līmenis hierarhijā (piemēram, "2. līmenis, Mape 1"). Lielākā daļa ekrāna lasītāju to apstrādā automātiski, ja ARIA lomas ir ieviestas pareizi.
- Tastatūras navigācijas konsekvence: Pārliecinieties, ka tastatūras navigācija ir konsekventa un paredzama dažādās pārlūkprogrammās un ekrāna lasītājos. Pārbaudiet savu koka skatu ar vairākiem ekrāna lasītājiem (piemēram, NVDA, JAWS, VoiceOver), lai identificētu un atrisinātu jebkādas neatbilstības.
- Progresīvā uzlabošana: Ja JavaScript ir atspējots, koka skatam joprojām jābūt pieejamam, lai gan ierobežotā stāvoklī. Apsveriet semantiskā HTML izmantošanu (piemēram, ligzdotus sarakstus), lai nodrošinātu pamata pieejamības līmeni pat bez JavaScript.
Pārlūkprogrammu saderība
Pieejamībai jābūt konsekventai dažādās pārlūkprogrammās un operētājsistēmās. Rūpīgi pārbaudiet savu koka skatu šādās vidēs:
- Darbvirsmas pārlūkprogrammas: Chrome, Firefox, Safari, Edge
- Mobilās pārlūkprogrammas: Chrome (Android un iOS), Safari (iOS)
- Operētājsistēmas: Windows, macOS, Linux, Android, iOS
- Ekrāna lasītāji: NVDA (Windows), JAWS (Windows), VoiceOver (macOS un iOS)
Izmantojiet pārlūkprogrammas izstrādātāju rīkus, lai pārbaudītu ARIA atribūtus un tastatūras uzvedību. Pievērsiet uzmanību jebkādām neatbilstībām vai renderēšanas problēmām.
Testēšana un validācija
Regulāra testēšana ir būtiska, lai nodrošinātu jūsu koka skata pieejamību. Šeit ir dažas testēšanas metodes:
- Manuālā testēšana: Izmantojiet ekrāna lasītāju un tastatūru, lai pārvietotos pa koka skatu un pārbaudītu, vai visas funkcijas ir pieejamas.
- Automatizētā testēšana: Izmantojiet pieejamības testēšanas rīkus (piemēram, axe DevTools, WAVE), lai identificētu potenciālas pieejamības problēmas.
- Lietotāju testēšana: Iesaistiet lietotājus ar invaliditāti testēšanas procesā, lai iegūtu reālas atsauksmes par jūsu koka skata pieejamību.
- WCAG atbilstība: Mērķējiet uz Tīmekļa satura pieejamības vadlīniju (WCAG) 2.1 AA līmeņa sasniegšanu. WCAG nodrošina starptautiski atzītu vadlīniju kopumu, lai padarītu tīmekļa saturu pieejamāku.
Labākā prakse pieejamu koka skatu izveidei
Šeit ir dažas labākās prakses, kuras jāievēro, projektējot un ieviešot pieejamus koka skatus:
- Sāciet ar semantisko HTML: Izmantojiet semantiskos HTML elementus (piem.,
<ul>
,<li>
), lai izveidotu koka skata pamatstruktūru. - Piemērojiet ARIA lomas un atribūtus: Izmantojiet ARIA lomas un atribūtus, lai pievienotu semantisku nozīmi un sniegtu informāciju palīgtehnoloģijām.
- Ieviesiet robustu tastatūras navigāciju: Pārliecinieties, ka koka skats ir pilnībā navigējams, izmantojot tikai tastatūru.
- Nodrošiniet skaidrus vizuālos norādījumus: Izmantojiet vizuālo dizainu, lai skaidri norādītu koka skata hierarhiju, stāvokli un fokusu.
- Testējiet ar ekrāna lasītājiem: Pārbaudiet koka skatu ar vairākiem ekrāna lasītājiem, lai pārliecinātos, ka tas ir pieejams ekrāna lasītāju lietotājiem.
- Validējiet WCAG atbilstību: Validējiet koka skatu atbilstoši WCAG vadlīnijām, lai nodrošinātu, ka tas atbilst pieejamības standartiem.
- Dokumentējiet savu kodu: Skaidri dokumentējiet savu kodu, paskaidrojot katra ARIA atribūta un tastatūras notikumu apstrādātāja mērķi.
- Izmantojiet bibliotēku vai ietvaru (piesardzīgi): Apsveriet iespēju izmantot gatavu koka skata komponenti no cienījamas UI bibliotēkas vai ietvara. Tomēr rūpīgi pārskatiet komponentes pieejamības funkcijas un pārliecinieties, ka tā atbilst jūsu prasībām. Vienmēr rūpīgi testējiet!
Papildu apsvērumi
- Slinkā ielāde (Lazy Loading): Ļoti lieliem kokiem ieviesiet slinko ielādi, lai ielādētu mezglus tikai tad, kad tie ir nepieciešami. Tas var uzlabot veiktspēju un samazināt sākotnējo ielādes laiku. Pārliecinieties, ka slinkā ielāde ir ieviesta pieejamā veidā, sniedzot atbilstošu atgriezenisko saiti lietotājam, kamēr mezgli tiek ielādēti. Izmantojiet ARIA "live regions", lai paziņotu par ielādes statusu.
- Vilkt un nomest (Drag and Drop): Ja jūsu koka skats atbalsta vilkšanas un nomešanas funkcionalitāti, pārliecinieties, ka tā ir pieejama arī tastatūras lietotājiem un ekrāna lasītāju lietotājiem. Nodrošiniet alternatīvas tastatūras komandas mezglu vilkšanai un nomešanai.
- Konteksta izvēlnes: Ja jūsu koka skats ietver konteksta izvēlnes, pārliecinieties, ka tās ir pieejamas tastatūras lietotājiem un ekrāna lasītāju lietotājiem. Izmantojiet ARIA atribūtus, lai identificētu konteksta izvēlni un tās opcijas.
- Globalizācija un lokalizācija: Projektējiet savu koka skatu tā, lai to varētu viegli lokalizēt dažādām valodām un kultūrām. Apsveriet dažādu teksta virzienu (piemēram, no labās uz kreiso) ietekmi uz vizuālo izkārtojumu un tastatūras navigāciju.
Noslēgums
Pieejamu koka skatu izveide prasa rūpīgu plānošanu un ieviešanu. Ievērojot šajā rakstā izklāstītās vadlīnijas, jūs varat nodrošināt, ka jūsu koka skati ir lietojami un pieejami visiem lietotājiem, ieskaitot tos, kuriem ir invaliditāte. Atcerieties, ka pieejamība nav tikai tehniska prasība; tas ir iekļaujoša dizaina pamatprincips.
Par prioritāti izvirzot pieejamību, jūs varat radīt labāku lietotāja pieredzi ikvienam, neatkarīgi no viņu spējām. Ir svarīgi regulāri testēt un validēt savu kodu. Sekojiet līdzi jaunākajiem pieejamības standartiem un labākajām praksēm, lai izveidotu patiesi iekļaujošas lietotāja saskarnes.