Sužinokite, kaip kurti išties įtraukius karuselės komponentus. Šis vadovas apima esminius prieinamumo principus, WCAG atitiktį, ARIA atributus ir praktines įgyvendinimo strategijas, skirtas skaidrių demonstracijoms, kurios tarnautų kiekvienam vartotojui visame pasaulyje.
Karuselės komponentai: vartotojo patirties gerinimas įgyvendinant prieinamas skaidrių demonstracijas
Dinamiškame saityno dizaino pasaulyje karuselės komponentai – dažnai vadinami skaidrių demonstracijomis, vaizdų slankikliais ar besisukančiomis reklaminėmis juostomis – tapo visur esančiu reiškiniu. Jie siūlo patrauklų būdą pristatyti kelis turinio vienetus, vaizdus ar raginimus veikti ribotoje ekrano erdvėje. Nuo el. prekybos produktų vitrinų iki naujienų portalų, išryškinančių svarbiausias istorijas, karuselės yra dažnas reiškinys svetainėse visame pasaulyje.
Tačiau, nepaisant vizualinio patrauklumo ir tariamo naudingumo, karuselės dažnai kelia didelių prieinamumo iššūkių. Daugelis jų yra kuriamos neatsižvelgiant į vartotojus su negalia, todėl faktiškai tampa skaitmeniniais barjerais, o ne įtraukiančiomis sąsajomis. Neprieinama karuselė gali erzinti, atstumti ar net padaryti svetainę netinkama naudoti asmenims, kurie pasikliauja pagalbinėmis technologijomis, tokiomis kaip ekrano skaitytuvai, naršymas klaviatūra ar alternatyvūs įvesties įrenginiai. Šis išsamus vadovas gilinsis į svarbiausius aspektus, kaip įdiegti tikrai prieinamus karuselės komponentus, užtikrinant, kad jūsų skaitmeninis buvimas būtų įtraukus kiekvienam vartotojui, nepriklausomai nuo jo gebėjimų ar buvimo vietos.
Būtinas karuselės prieinamumo poreikis
Kodėl turėtume teikti pirmenybę prieinamumui kurdami karuseles? Priežastys yra daugialypės, apimančios etinius imperatyvus, teisinį atitikimą ir apčiuopiamą verslo naudą.
Teisinis ir etinis atitikimas
- Pasauliniai standartai: Saityno turinio prieinamumo gairės (WCAG), kurias parengė „World Wide Web Consortium“ (W3C), yra tarptautinis saityno prieinamumo standartas. WCAG principų (šiuo metu 2.1 ir 2.2) laikymasis yra labai svarbus siekiant užtikrinti, kad jūsų turinys būtų suvokiamas, valdomas, suprantamas ir patikimas visiems vartotojams. Daugelis šalių priėmė WCAG kaip pagrindinį standartą savo prieinamumo teisės aktams.
- Nacionaliniai įstatymai: Daugelis šalių turi konkrečius įstatymus, įpareigojančius užtikrinti skaitmeninį prieinamumą. Pavyzdžiui, Amerikiečių su negalia aktas (ADA) Jungtinėse Valstijose, Europos prieinamumo aktas (EAA) visoje Europos Sąjungoje, Lygybės aktas Jungtinėje Karalystėje ir panašūs teisės aktai Kanadoje, Australijoje, Japonijoje ir kitose šalyse. Nesilaikymas gali lemti teisinius veiksmus, finansines baudas ir pakenkti reputacijai.
- Etinė atsakomybė: Be teisinių įpareigojimų, egzistuoja ir pagrindinė etinė atsakomybė kurti įtraukias skaitmenines patirtis. Saitynas turėtų būti prieinamas visiems, suteikiant žmonėms su negalia galimybę visapusiškai dalyvauti skaitmeninėje visuomenėje, gauti informaciją, vykdyti verslą ir naudotis internetinėmis paslaugomis.
Geresnė vartotojo patirtis visiems
- Platesnė auditorija: Padarydami karuseles prieinamas, jūs išplečiate savo svetainės pasiekiamumą platesnei auditorijai, įskaitant milijonus žmonių visame pasaulyje su regos, klausos, pažinimo, motorikos ar kitomis negaliomis. Tai reiškia daugiau potencialių klientų, skaitytojų ar paslaugų vartotojų.
- Pagerintas naudojimasis: Daugelis prieinamumo funkcijų yra naudingos visiems vartotojams. Pavyzdžiui, aiški navigacija klaviatūra supaprastina sąveiką patyrusiems vartotojams, kurie nenori naudoti pelės, arba tiems, kurie naudoja lietimui jautrius įrenginius. Pauzės/paleidimo valdikliai naudingi vartotojams, kuriems reikia daugiau laiko apdoroti turinį, net ir neturint konkrečios negalios.
- SEO pranašumai: Paieškos sistemos teikia pirmenybę prieinamam, gerai struktūrizuotam turiniui. Tinkamas semantinis HTML, ARIA atributai ir aiškus vaizdų „alt“ tekstas gali pagerinti jūsų svetainės paieškos sistemų optimizavimą (SEO), o tai lemia geresnį matomumą ir organinį srautą.
Pagrindiniai WCAG principai, taikomi karuselėms
WCAG yra struktūrizuotas pagal keturis pagrindinius principus, dažnai trumpinamus kaip POUR: Suvokiamas (Perceivable), Valdomas (Operable), Suprantamas (Understandable) ir Patikimas (Robust). Išnagrinėkime, kaip jie tiesiogiai taikomi karuselės komponentams.
1. Suvokiamas
Informacija ir vartotojo sąsajos komponentai turi būti pateikti vartotojams taip, kad jie galėtų juos suvokti.
- Teksto alternatyvos (WCAG 1.1.1): Visas ne tekstinis turinys (pavyzdžiui, vaizdai karuselės skaidrėse) turi turėti teksto alternatyvas, atliekančias lygiavertę funkciją. Tai reiškia, kad reikia pateikti aprašomąjį
alt
tekstą vaizdams, ypač jei jie perteikia informaciją. Jei vaizdas yra tik dekoratyvinis, joalt
atributas turėtų būti tuščias (alt=""
). - Atskirtinas (WCAG 1.4): Užtikrinkite pakankamą kontrastą tarp teksto ir fono bet kokiam tekstui karuselėje (pvz., skaidrių pavadinimams, navigacijos valdikliams). Taip pat įsitikinkite, kad interaktyvūs elementai, tokie kaip navigacijos rodyklės ar skaidrių indikatoriai, yra vizualiai aiškūs ir aiškiai rodo savo būseną (pvz., užvedus pelę, sufokusavus, aktyvus).
- Laiku pagrįsta medija (WCAG 1.2): Jei karuselėje yra vaizdo ar garso turinio, užtikrinkite, kad jame būtų subtitrai, transkripcijos ir garso aprašymai, jei tai reikalinga.
2. Valdomas
Vartotojo sąsajos komponentai ir navigacija turi būti valdomi.
- Prieinama klaviatūra (WCAG 2.1.1): Visa karuselės funkcionalumas turi būti valdomas per klaviatūros sąsają, nereikalaujant konkrečių laiko intervalų atskiriems klavišų paspaudimams. Tai apima naršymą tarp skaidrių, pauzės/paleidimo mygtukų aktyvavimą ir prieigą prie bet kokių nuorodų ar interaktyvių elementų skaidrėse.
- Nėra klaviatūros spąstų (WCAG 2.1.2): Vartotojai neturi įstrigti karuselės komponente. Jie turi turėti galimybę perkelti fokusą iš karuselės naudojant standartinę klaviatūros navigaciją (pvz., „Tab“ klavišu).
- Pakankamai laiko (WCAG 2.2): Vartotojai turi turėti pakankamai laiko perskaityti ir naudoti turinį.
- Pauzė, Stabdymas, Slėpimas (WCAG 2.2.2): Bet kokiam automatiškai judančiam ar atsinaujinančiam turiniui vartotojai turi turėti galimybę jį pristabdyti, sustabdyti arba paslėpti. Tai ypač svarbu automatiškai besikeičiančioms karuselėms. Automatiškai besikeičianti karuselė be aiškiai matomo pauzės/paleidimo mygtuko yra didelis prieinamumo barjeras ekrano skaitytuvų vartotojams, vartotojams su kognityvinėmis negaliomis ar tiems, kurių vikrumas ribotas.
- Laiko reguliavimas (WCAG 2.2.1): Jei nustatytas laiko limitas, vartotojai turėtų turėti galimybę jį reguliuoti, pratęsti arba išjungti.
- Įvesties būdai (WCAG 2.5): Užtikrinkite, kad karuselę galima valdyti įvairiais įvesties būdais, įskaitant lietimo gestus, o ne tik pelės paspaudimus.
3. Suprantamas
Informacija ir vartotojo sąsajos veikimas turi būti suprantami.
- Nuspėjamas (WCAG 3.2): Karuselės elgesys turėtų būti nuspėjamas. Navigacijos valdikliai turėtų nuosekliai judinti karuselę numatyta kryptimi (pvz., „kitas“ mygtukas visada pereina į kitą skaidrę). Sąveika su karusele neturėtų sukelti netikėtų konteksto pasikeitimų.
- Pagalba įvedant (WCAG 3.3): Jei karuselė apima formas ar vartotojo įvestį, pateikite aiškias etiketes, instrukcijas ir klaidų identifikavimą/pasiūlymus.
- Skaitomumas (WCAG 3.1): Užtikrinkite, kad tekstinis turinys karuselėje būtų skaitomas, naudojant aiškią kalbą ir tinkamą skaitymo lygį.
4. Patikimas
Turinys turi būti pakankamai patikimas, kad jį galėtų patikimai interpretuoti įvairios vartotojo programos, įskaitant pagalbines technologijas.
- Analizavimas (Parsing) (WCAG 4.1.1): Užtikrinkite, kad HTML yra gerai suformuotas ir galiojantis. Nors naršyklės ne visada griežtai reikalauja HTML galiojimo, gerai suformuotą HTML patikimiau interpretuoja pagalbinės technologijos.
- Pavadinimas, vaidmuo, vertė (WCAG 4.1.2): Visų vartotojo sąsajos komponentų pavadinimas, vaidmuo ir vertė turi būti programiškai nustatomi. Čia nepakeičiami tampa prieinamų turtingų interneto programų (ARIA) atributai. ARIA suteikia būtiną semantiką, apibūdinančią vartotojo sąsajos komponentus ir jų būsenas pagalbinėms technologijoms.
Pagrindinės prieinamumo savybės ir karuselių įgyvendinimo strategijos
Pereikime nuo teorijos prie praktikos ir išsamiai apžvelkime esmines savybes bei įgyvendinimo metodus, skirtus kurti tikrai prieinamas karuseles.
1. Semantinė HTML struktūra
Pradėkite nuo tvirto semantinio pagrindo. Naudokite gimtuosius HTML elementus, kur įmanoma, prieš griebdamiesi ARIA vaidmenų.
<div class="carousel-container">
<!-- Pasirinktinai, aria-live sritis, skirta pranešti apie skaidrių pasikeitimus -->
<div id="carousel-announcer" aria-live="polite" class="visually-hidden"></div>
<!-- Pagrindinė karuselės struktūra -->
<div role="region" aria-roledescription="carousel" aria-label="Vaizdų karuselė">
<ul class="carousel-slides">
<li id="slide1" role="group" aria-roledescription="slide" aria-label="1 iš 3" tabindex="0">
<img src="image1.jpg" alt="Paveikslėlio 1 aprašymas">
<h3>Skaidrės pavadinimas 1</h3>
<p>Trumpas aprašymas 1 skaidrei.</p>
<a href="#">Sužinoti daugiau</a>
</li>
<li id="slide2" role="group" aria-roledescription="slide" aria-label="2 iš 3" aria-hidden="true">
<img src="image2.jpg" alt="Paveikslėlio 2 aprašymas">
<h3>Skaidrės pavadinimas 2</h3>
<p>Trumpas aprašymas 2 skaidrei.</p>
<a href="#">Atrasti daugiau</a>
</li>
<!-- daugiau skaidrių -->
</ul>
<!-- Navigacijos valdikliai -->
<button type="button" class="carousel-control prev" aria-controls="slide-container-id" aria-label="Ankstesnė skaidrė">
<span aria-hidden="true">❮</span>
</button>
<button type="button" class="carousel-control next" aria-controls="slide-container-id" aria-label="Kita skaidrė">
<span aria-hidden="true">❯</span>
</button>
<!-- Skaidrių indikatoriai / naršymo taškai -->
<div role="tablist" aria-label="Karuselės skaidrių indikatoriai">
<button type="button" role="tab" aria-selected="true" aria-controls="slide1" id="tab-for-slide1" tabindex="0">
<span class="visually-hidden">Skaidrė 1 iš 3</span>
</button>
<button type="button" role="tab" aria-selected="false" aria-controls="slide2" id="tab-for-slide2" tabindex="-1">
<span class="visually-hidden">Skaidrė 2 iš 3</span>
</button>
<!-- daugiau indikatorių mygtukų -->
</div>
<!-- Pauzės/paleidimo mygtukas -->
<button type="button" class="carousel-play-pause" aria-label="Pristabdyti automatinę skaidrių demonstraciją">
<span aria-hidden="true">⏸</span>
</button>
</div>
</div>
2. ARIA vaidmenys ir atributai: semantikos suteikimas jūsų karuselei
ARIA (Accessible Rich Internet Applications) atributai yra labai svarbūs perteikiant vartotojo sąsajos komponentų vaidmenis, būsenas ir savybes pagalbinėms technologijoms, kai gimtojo HTML nepakanka.
role="region"
arbarole="group"
: Naudokite pagrindiniam karuselės konteineriui. Tai apibrėžia suvokiamą turinio sritį. Alternatyviai,role="group"
taip pat gali būti tinkamas.aria-roledescription="carousel"
: Pasirinktinis vaidmens aprašymas, kuris pakeičia numatytąją elemento semantiką. Tai padeda ekrano skaitytuvų vartotojams suprasti, kad jie sąveikauja su „karusele“, o ne tik su „sritimi“ ar „grupe“.aria-label="Vaizdų karuselė"
: Suteikia prieinamą pavadinimą visam karuselės komponentui. Tai būtina, kad ekrano skaitytuvų vartotojai suprastų komponento paskirtį.aria-live="polite"
: Taikoma vizualiai paslėptam elementui, kuris praneša apie skaidrių pasikeitimus. Kai skaidrė pasikeičia, atnaujinkite šio elemento turinį (pvz., „Skaidrė 2 iš 5, naujos prekės“). „Polite“ reiškia, kad pranešimas bus pateiktas, kai ekrano skaitytuvas baigs savo dabartinę užduotį, taip išvengiant pertraukimų.role="group"
atskiroms skaidrėms: Kiekvienas skaidrės konteineris (pvz.,<li>
elementas) turėtų turėtirole="group"
.aria-roledescription="slide"
atskiroms skaidrėms: Panašiai kaip ir karuselės konteineriui, tai patikslina, kad grupė yra būtent „skaidrė“.aria-label="1 iš 3"
atskiroms skaidrėms: Suteikia kontekstą apie dabartinę skaidrę, ypač kai ji tampa aktyvi. Tai gali būti dinamiškai atnaujinama naudojant JavaScript.aria-hidden="true"
: Taikoma neaktyvioms skaidrėms. Tai pašalina jas iš prieinamumo medžio, neleidžiant ekrano skaitytuvams suvokti turinio, kuris šiuo metu nėra matomas. Kai skaidrė tampa aktyvi, josaria-hidden
atributas turėtų būti nustatytas į"false"
arba pašalintas.tabindex="0"
irtabindex="-1"
: Aktyvi skaidrė turėtų turėtitabindex="0"
, kad ją būtų galima programiškai sufokusuoti ir ji būtų tabuliavimo sekos dalis. Neaktyvios skaidrės turėtų turėtitabindex="-1"
, kad jas būtų galima sufokusuoti programiškai (pvz., kai jos tampa aktyvios), bet jos nebūtų nuoseklios tabuliavimo navigacijos dalis. Visi interaktyvūs elementai *aktyvioje* skaidrėje (nuorodos, mygtukai) turėtų būti natūraliai fokusuojami.- Navigacijos mygtukai (Ankstesnis/Kitas):
<button type="button">
: Valdikliams visada naudokite gimtuosius mygtukų elementus.aria-label="Ankstesnė skaidrė"
: Suteikia glaustą, aprašomąją etiketę mygtuko veiksmui. Vien tik vizualinių piktogramų nepakanka.aria-controls="[ID_OF_SLIDE_CONTAINER]"
: Nors ne visos pagalbinės technologijos palaiko šį atributą visuose kontekstuose, jis gali semantiškai susieti mygtuką su sritimi, kurią jis valdo, suteikdamas papildomo konteksto.<span aria-hidden="true">
: Jei mygtuko viduje naudojate vizualinius simbolius ar piktogramas (pavyzdžiui, ❮ ar ❯), paslėpkite juos nuo ekrano skaitytuvų, kad išvengtumėte nereikalingų ar klaidinančių pranešimų.aria-label
ant paties mygtuko suteikia būtiną kontekstą.
- Skaidrių indikatoriai (taškai/puslapiavimas):
role="tablist"
: Indikatorių taškų konteineris turėtų naudoti šį vaidmenį. Tai reiškia skirtukų sąrašą.aria-label="Karuselės skaidrių indikatoriai"
: Prieinamas pavadinimas skirtukų sąrašo konteineriui.role="tab"
: Kiekvienas atskiras indikatoriaus taškas/mygtukas turėtų turėti šį vaidmenį.aria-selected="true"/"false"
: Nurodo, ar atitinkama skaidrė šiuo metu yra aktyvi. Tai turėtų būti dinamiškai atnaujinama.aria-controls="[ID_OF_CORRESPONDING_SLIDE]"
: Susieja indikatoriaus skirtuką su jam priklausančia skaidre.tabindex="0"
aktyviam skirtukui,tabindex="-1"
neaktyviems skirtukams: Leidžia naršyti tarp indikatorių skirtukų klaviatūros rodyklių klavišais (įprastas modelis `tablist` komponentams).- Vizualiai paslėptas tekstas: Kiekvienam indikatoriui pateikite vizualiai paslėptą tekstą, pvz.,
<span class="visually-hidden">Skaidrė 1 iš 3</span>
, kad suteiktumėte visą kontekstą ekrano skaitytuvų vartotojams.
- Pauzės/paleidimo mygtukas:
<button type="button">
: Standartinis mygtuko elementas.aria-label="Pristabdyti automatinę skaidrių demonstraciją"
(kai veikia) arbaaria-label="Tęsti automatinę skaidrių demonstraciją"
(kai pristabdyta): Dinamiškai atnaujinkite etiketę, kad atspindėtų dabartinį veiksmą.<span aria-hidden="true">
: Paslėpkite vizualinę piktogramą (paleidimo/pauzės simbolį) nuo ekrano skaitytuvų.
3. Navigacija klaviatūra: daugiau nei pelė
Prieinamumas klaviatūra yra svarbiausias. Vartotojai, kurie negali naudoti pelės (dėl motorikos sutrikimų, regos sutrikimų ar tiesiog pageidavimo), visiškai pasikliauja klaviatūra. Tikrai prieinama karuselė turi būti visiškai valdoma klaviatūra.
- Tab ir Shift+Tab: Vartotojai turėtų galėti pereiti į karuselę, naršyti po jos valdiklius (ankstesnis, kitas, pauzė/paleidimas, skaidrių indikatoriai) ir tada išeiti iš karuselės. Užtikrinkite logišką ir nuspėjamą tabuliavimo tvarką.
- Rodyklių klavišai:
- Kairės/dešinės rodyklės: Turėtų naršyti tarp skaidrių, kai fokusas yra ant ankstesnio/kito mygtukų arba pačios aktyvios skaidrės.
- Home/End klavišai: Pasirinktinai, „Home“ galėtų pereiti į pirmą skaidrę, o „End“ – į paskutinę.
- Skirtukų indikatoriams (
role="tablist"
): Kai fokusas yra ant indikatoriaus, kairės/dešinės rodyklių klavišai turėtų perkelti fokusą tarp indikatorių, o tarpo/enter klavišas turėtų aktyvuoti pasirinktą indikatorių, parodydamas atitinkamą skaidrę.
- Enter/tarpo klavišas: Turėtų aktyvuoti mygtukus ir nuorodas karuselėje. Pačiai aktyviai skaidrei (jei ji turi `tabindex="0"`), paspaudus „Enter“ ar tarpą, priklausomai nuo dizaino, galėtų būti pereinama į kitą skaidrę arba aktyvuojamas pagrindinis raginimas veikti skaidrėje.
Klaviatūros sąveikos pavyzdžio logika (konceptualus JavaScript):
// Tarkime, 'carouselElement' yra pagrindinis karuselės konteineris
carouselElement.addEventListener('keydown', function(event) {
switch (event.key) {
case 'ArrowLeft':
// Logika rodyti ankstesnę skaidrę
break;
case 'ArrowRight':
// Logika rodyti kitą skaidrę
break;
case 'Home':
// Logika rodyti pirmą skaidrę
break;
case 'End':
// Logika rodyti paskutinę skaidrę
break;
case 'Tab':
// Užtikrinti, kad fokusas tinkamai pereitų arba išeitų iš karuselės
break;
case 'Enter':
case ' ': // Tarpo klavišas
// Logika aktyvuoti dabartinį sufokusuotą mygtuką/nuorodą arba pereiti į kitą skaidrę, jei taikoma
break;
}
});
4. Fokuso valdymas ir vizualiniai indikatoriai
Vartotojai turi žinoti, kur yra jų fokusas. Be aiškių vizualinių fokuso indikatorių, navigacija klaviatūra tampa neįmanoma.
- Matomas fokuso indikatorius: Užtikrinkite, kad naršyklės numatytasis fokuso rėmelis (arba pasirinktinis, gerai matomas) niekada nebūtų pašalintas naudojant
outline: none;
CSS. Aiškus fokuso indikatorius padeda vartotojams sekti savo poziciją puslapyje. - Programinis fokusas: Kai skaidrė pasikeičia (ypač jei naršoma naudojant ankstesnio/kito mygtukus), užtikrinkite, kad fokusas būtų programiškai perkeltas į naujai aktyvią skaidrę arba logišką elementą joje. Alternatyviai, fokusas galėtų likti ant navigacijos valdiklio, kuris sukėlė pasikeitimą, tačiau labai svarbu pranešti apie naują skaidrę per `aria-live` sritį.
- Dabartinės skaidrės indikacija: Vizualiai paryškinkite šiuo metu aktyvų skaidrės indikatorių (pvz., tamsesnis taškas, didesnis dydis), kad suteiktumėte kontekstą visiems vartotojams.
5. Automatinio judėjimo valdymas (taisyklė „Pauzė, Stabdymas, Slėpimas“)
Tai bene viena iš svarbiausių karuselių prieinamumo funkcijų. Automatiškai besikeičiančios karuselės yra liūdnai pagarsėję prieinamumo barjerai.
- Numatytoji būsena: Pauzė: Idealiu atveju karuselės neturėtų automatiškai keistis pagal nutylėjimą. Leiskite vartotojams patiems aktyvuoti judėjimą.
- Privalomas pauzės/paleidimo mygtukas: Jei automatinis keitimasis yra verslo reikalavimas, aiškiai matomas, lengvai randamas ir klaviatūra valdomas pauzės/paleidimo mygtukas yra absoliučiai būtinas.
- Užvedus pelę/sufokusavus: Karuselė turėtų automatiškai pristoti, kai vartotojo pelė užvedama ant jos arba kai fokusas patenka į bet kurį interaktyvų elementą karuselėje. Ji turėtų tęsti veikimą tik tada, kai pelė patraukiama arba fokusas išeina, su sąlyga, kad vartotojas aiškiai nepaspaudė pauzės mygtuko.
- Pranešimai: Kai karuselė pristabdoma ar paleidžiama, praneškite apie šį pasikeitimą ekrano skaitytuvų vartotojams per `aria-live` sritį (pvz., „Skaidrių demonstracija pristabdyta“, „Skaidrių demonstracija leidžiama“).
6. Turinys skaidrėse ir jo prieinamumas
Be paties karuselės mechanizmo, užtikrinkite, kad turinys *kiekvienoje* skaidrėje būtų prieinamas.
- „Alt“ tekstas vaizdams: Kaip minėta, kiekvienas prasmingas vaizdas turi turėti aprašomąjį `alt` tekstą.
- Medijos transkripcijos/subtitrai: Jei skaidrėse yra vaizdo įrašų ar garso, pateikite prieinamas alternatyvas.
- Nuorodų/mygtukų etiketės: Užtikrinkite, kad visos nuorodos ir mygtukai turėtų prasmingą, aprašomąjį tekstą, kuris būtų suprantamas ir ištrauktas iš konteksto (pvz., „Skaityti daugiau apie pasaulines iniciatyvas“, o ne tiesiog „Skaityti daugiau“).
- Antraščių struktūra: Naudokite tinkamą antraščių hierarchiją (
<h1>
,<h2>
,<h3>
ir t.t.) skaidrėse, kad turinys būtų logiškai struktūrizuotas. - Kontrastas: Išlaikykite pakankamą spalvų kontrastą visam tekstui ir interaktyviems elementams kiekvienoje skaidrėje.
Dažniausios klaidos ir kaip jų išvengti
Net ir turint gerų ketinimų, daugelis karuselių neatitinka prieinamumo reikalavimų. Štai dažniausios klaidos ir kaip jų išvengti:
- Fokuso rėmelių pašalinimas: Atsitiktinai ar sąmoningai naudojant
outline: none;
CSS. Sprendimas: Niekada nešalinkite fokuso rėmelių. Geriau pritaikykite juos geresniam matomumui, užuot juos pašalinę. - Nėra pauzės/paleidimo mygtuko automatiniam keitimuisi: Automatiškai besikeičiančios karuselės be vartotojo kontrolės. Sprendimas: Visada pateikite aiškiai matomą, klaviatūra valdomą pauzės mygtuką. Apsvarstykite galimybę numatytąją būseną nustatyti kaip pristabdytą.
- Nėra navigacijos klaviatūra: Pasikliaujama tik pelės paspaudimais ar lietimo gestais. Sprendimas: Įdiekite visapusišką klaviatūros palaikymą visiems interaktyviems elementams ir skaidrių navigacijai.
- Neaiškios ARIA etiketės ar trūkstami vaidmenys: Naudojant bendrines etiketes, pvz., „Mygtukas“, arba praleidžiant ARIA vaidmenis. Sprendimas: Pateikite aprašomuosius
aria-label
atributus (pvz., „Kita skaidrė“, „Skaidrė 3 iš 5, pristatanti naujus produktus“). Naudokite tinkamus ARIA vaidmenis, pvz., `role="region"`, `role="tablist"`, `role="tab"`. - Neteisingas
aria-hidden
naudojimas: Taikant `aria-hidden="true"` aktyviems elementams arba praleidžiant jį neaktyviems. Sprendimas: Taikykite `aria-hidden="true"` tik tam turiniui, kuris yra tikrai paslėptas ir šiuo metu neinteraktyvus. Užtikrinkite, kad matomoms, aktyvioms skaidrėms jis būtų pašalintas arba nustatytas į `false`. - Neprieinamas turinys skaidrėse: Susitelkiama tik į karuselės mechanizmą, bet nepaisoma rodomo turinio. Sprendimas: Užtikrinkite, kad kiekvienas elementas *skaidrių viduje* (vaizdai, nuorodos, tekstas) atitiktų prieinamumo standartus.
- Per daug turinio vienoje skaidrėje: Skaidrių perkrovimas tekstu ar per daug interaktyvių elementų, ypač jei jos greitai keičiasi automatiškai. Sprendimas: Turinys turi būti glaustas. Pateikite tik esminę informaciją. Jei skaidrei reikia daug skaityti ar sąveikauti, užtikrinkite pakankamai laiko arba vartotojo kontrolę judėjimui.
- Karuselė kaip pagrindinė navigacija: Karuselės naudojimas kaip pagrindinės priemonės naršyti svarbias svetainės dalis. Sprendimas: Karuselės geriausiai tinka demonstravimui. Esminis turinys ir navigacija visada turėtų būti prieinami per statines, matomas nuorodas kitur puslapyje.
Jūsų prieinamos karuselės testavimas
Įgyvendinimas yra tik pusė darbo. Kruopštus testavimas yra labai svarbus norint užtikrinti, kad jūsų karuselė būtų tikrai prieinama įvairiems vartotojams.
1. Rankinis testavimas klaviatūra
- Tab klavišas: Ar galite pereiti į karuselę, per ją (visus valdiklius ir interaktyvius elementus) ir iš jos? Ar tabuliavimo tvarka yra logiška?
- Shift+Tab: Ar atvirkštinis tabuliavimas veikia teisingai?
- Enter/tarpas: Ar visi mygtukai ir nuorodos aktyvuojasi kaip tikėtasi?
- Rodyklių klavišai: Ar kairės/dešinės rodyklės naršo skaidres kaip numatyta? Ar jos veikia skaidrių indikatoriams?
- Fokuso indikatorius: Ar fokuso rėmelis visada matomas ir aiškus?
2. Testavimas ekrano skaitytuvu
Testuokite su bent viena populiaria ekrano skaitytuvo kombinacija:
- Windows: NVDA (nemokama) arba JAWS (komercinė) su Chrome arba Firefox.
- macOS: VoiceOver (įmontuota) su Safari arba Chrome.
- Mobilieji įrenginiai: TalkBack (Android) arba VoiceOver (iOS).
Testuodami ekrano skaitytuvu, klausykitės:
- Ar karuselės elementai yra pranešami su teisingais vaidmenimis (pvz., „karuselė“, „skirtukų sąrašas“, „skirtukas“)?
- Ar prieinami pavadinimai (
aria-label
, mygtukų tekstas) yra aiškiai perskaitomi? - Ar pranešama apie skaidrių pasikeitimus (pvz., „Skaidrė 2 iš 5“)?
- Ar galite pristabdyti/paleisti karuselę? Ar pranešama apie būsenos pasikeitimą?
- Ar galite naršyti visus interaktyvius elementus karuselėje naudodami ekrano skaitytuvo komandas?
- Ar `aria-hidden` veikia teisingai, neleidžiant pranešti apie paslėptą turinį?
3. Automatiniai prieinamumo tikrintuvai
Nors automatinės priemonės negali aptikti visų prieinamumo problemų, jos yra puiki pirmoji gynybos linija.
- Naršyklės plėtiniai: Axe DevTools, Lighthouse (įmontuotas į Chrome DevTools).
- Internetiniai skeneriai: WAVE, Siteimprove, SortSite.
4. Vartotojų testavimas su įvairiais asmenimis
Pats vertingiausias grįžtamasis ryšys dažnai gaunamas iš realių vartotojų su negalia. Apsvarstykite galimybę atlikti naudojimo testavimo sesijas su asmenimis, kurie naudoja skirtingas pagalbines technologijas arba turi įvairių pažinimo, motorikos ar regos sutrikimų. Jų realios patirtys atskleis niuansus, kurių automatinės priemonės ir į kūrėjus orientuotas testavimas gali nepastebėti.
Prieinamos karuselės sprendimo pasirinkimas ar kūrimas
Pradedant naują projektą, paprastai turite du pagrindinius būdus įgyvendinti karuseles:
1. Naudojant esamas bibliotekas ar karkasus
Daugelis populiarių JavaScript bibliotekų (pvz., Swiper, Slick, Owl Carousel) siūlo karuselių funkcionalumą. Rinkdamiesi vieną iš jų, teikite pirmenybę toms, kurios turi stiprias, dokumentuotas prieinamumo funkcijas. Ieškokite:
- WCAG atitiktis: Ar biblioteka aiškiai nurodo WCAG atitiktį arba pateikia gaires, kaip jos pasiekti?
- ARIA palaikymas: Ar ji automatiškai taiko teisingus ARIA vaidmenis ir atributus, ar suteikia galimybes juos pritaikyti?
- Navigacija klaviatūra: Ar įdiegta visapusiška ir konfigūruojama navigacija klaviatūra?
- Pauzės/paleidimo valdymas: Ar pauzės/paleidimo mygtukas yra įtrauktas pagal nutylėjimą arba lengvai įgyvendinamas? Ar jis valdo automatinį pristabdymą užvedus pelę/sufokusavus?
- Dokumentacija: Ar prieinamumo įgyvendinimas yra gerai dokumentuotas, nurodantis, kaip užtikrinti atitiktį?
- Bendruomenės palaikymas: Aktyvi bendruomenė dažnai reiškia greitesnius klaidų taisymus ir geresnes prieinamumo funkcijas.
Įspėjimas: Net ir biblioteka, teigianti esanti „prieinama“, gali reikalauti kruopštaus konfigūravimo ir individualaus stiliaus pritaikymo, kad atitiktų visus jūsų specifinius WCAG reikalavimus. Visada kruopščiai testuokite, nes numatytieji nustatymai gali neapimti visų kraštutinių atvejų ar vietinių reglamentų.
2. Kūrimas nuo nulio
Norint turėti didesnę kontrolę ir užtikrinti visišką atitiktį, individualios karuselės kūrimas nuo nulio leidžia įdiegti prieinamumą nuo pat pradžių. Šis metodas, nors iš pradžių reikalauja daugiau laiko, gali lemti patikimesnį ir tikrai prieinamą sprendimą, pritaikytą jūsų konkretiems poreikiams. Tai reikalauja gilaus HTML semantikos, ARIA, JavaScript įvykių valdymo ir CSS, skirto fokuso būsenų stilizavimui, supratimo.
Pagrindiniai aspektai kuriant nuo nulio:
- Progresyvus tobulinimas: Užtikrinkite, kad pagrindinis turinys būtų pasiekiamas net jei JavaScript neveikia arba yra išjungtas (nors tai rečiau pasitaiko dinamiškoms karuselėms).
- Našumas: Optimizuokite greitam įkėlimui ir sklandiems perėjimams, kas ypač svarbu vartotojams su lėtesniu ryšiu ar senesniais įrenginiais visame pasaulyje.
- Priežiūra: Rašykite švarų, modulinį kodą, kurį lengva atnaujinti ir derinti.
Išvada: daugiau nei atitiktis – link tikros skaitmeninės įtraukties
Prieinamų karuselės komponentų įgyvendinimas nėra tik varnelės uždėjimas teisiniam atitikimui; tai yra esminis aspektas kuriant tikrai įtraukias ir vartotojui draugiškas skaitmenines patirtis. Kruopščiai taikydami WCAG principus, naudodami ARIA atributus, užtikrindami patikimą navigaciją klaviatūra ir suteikdami esminius vartotojo valdiklius, mes paverčiame potencialius barjerus galingais turinio pateikimo įrankiais.
Atminkite, kad prieinamumas yra nuolatinė kelionė. Nuolat testuokite savo komponentus, įsiklausykite į vartotojų atsiliepimus ir sekite besikeičiančius standartus. Įtraukdami prieinamumą į savo karuselių dizainą, jūs ne tik laikotės pasaulinių įpareigojimų, bet ir atveriate turtingesnį, teisingesnį internetą visiems ir visur. Jūsų įsipareigojimas įtraukiajam dizainui stiprina jūsų prekės ženklą, plečia auditoriją ir prisideda prie prieinamesnio skaitmeninio pasaulio kūrimo.