Komplexný sprievodca implementáciou prístupných tooltipov pomocou stavov hover a focus, ktorý zaisťuje použiteľnosť pre všetkých používateľov vrátane ľudí so zdravotným postihnutím.
Implementácia tooltipov: Prístupné informácie pri prejdení myšou a zameraní
Tooltipy sú malé, kontextové pomocné správy, ktoré sa zobrazia, keď používateľ prejde kurzorom myši nad prvok alebo sa naň zameria. Môžu poskytovať dodatočné informácie, objasňovať účel prvku alebo ponúkať rady, ako používať funkciu. Tooltipy sa však môžu ľahko stať nočnou morou pre prístupnosť, ak nie sú implementované správne. Tento sprievodca načrtáva osvedčené postupy pre vytváranie tooltipov, ktoré sú použiteľné pre všetkých, vrátane používateľov so zdravotným postihnutím.
Prečo na prístupnosti tooltipov záleží
Prístupnosť nie je len o dodržiavaní noriem; je to o vytváraní lepšej používateľskej skúsenosti pre všetkých. Keď tooltipy nie sú prístupné, môžu vylúčiť používateľov, ktorí sa spoliehajú na asistenčné technológie, ako sú čítačky obrazovky, navigácia pomocou klávesnice alebo hlasový vstup. Zvážte tieto scenáre:
- Používatelia čítačiek obrazovky: Ak tooltip nie je správne označený, čítačka obrazovky nemusí ohlásiť jeho prítomnosť alebo obsah.
- Používatelia klávesnice: Ak sa tooltip zobrazuje len pri prejdení myšou, používatelia klávesnice k nemu nebudú mať prístup.
- Používatelia s motorickým postihnutím: Presné pohyby myšou potrebné pre interakcie pri prejdení myšou môžu byť náročné alebo nemožné.
- Používatelia s kognitívnym postihnutím: Zle načasovaný alebo mätúci tooltip môže spôsobiť frustráciu a brániť porozumeniu.
Dodržiavaním osvedčených postupov v oblasti prístupnosti môžeme zabezpečiť, že tooltipy budú používateľskú skúsenosť pre všetkých zlepšovať, a nie jej brániť.
Kľúčové princípy pre prístupné tooltipy
Nasledujúce princípy sú kľúčové pre vytváranie prístupných tooltipov:
- Poskytnite alternatívny prístup: Zabezpečte, aby boli tooltipy prístupné prostredníctvom prejdenia myšou (hover) aj zamerania klávesnicou (focus).
- Používajte atribúty ARIA: Používajte atribúty ARIA (Accessible Rich Internet Applications) na správnu identifikáciu a popis tooltipov pre asistenčné technológie.
- Spravujte focus: Kontrolujte, kam sa presunie focus, keď sa tooltip zobrazí a skryje.
- Zabezpečte dostatočný kontrast: Poskytnite dostatočný farebný kontrast medzi textom a pozadím tooltipu.
- Poskytnite dostatok času: Dajte používateľom dostatok času na prečítanie obsahu tooltipu.
- Umožnite ich zatvorenie: Poskytnite jasný spôsob, ako tooltip zavrieť.
- Vyhnite sa nadmernému používaniu: Používajte tooltipy striedmo a len vtedy, keď je to nevyhnutné.
Implementačné techniky
1. Použitie hover a focus
Najdôležitejším aspektom prístupných tooltipov je zabezpečenie ich dostupnosti pre používateľov myši aj klávesnice. To znamená, že tooltip by sa mal zobraziť ako pri prejdení myšou, tak aj pri zameraní prvku.
HTML:
<a href="#" aria-describedby="tooltip-example">Príklad odkazu</a>
<div id="tooltip-example" role="tooltip" style="display: none;">Toto je príklad tooltipu.</div>
CSS:
a:hover + div[role="tooltip"],
a:focus + div[role="tooltip"] {
display: block;
position: absolute;
background-color: #f0f0f0;
border: 1px solid #ccc;
padding: 5px;
z-index: 1000; /* Zaistí, aby bol tooltip navrchu */
}
Vysvetlenie:
aria-describedby
: Tento atribút spája odkaz s prvkom tooltipu pomocou jeho ID. Týmto spôsobom oznamuje asistenčným technológiám, že tooltip poskytuje dodatočné informácie o odkaze.role="tooltip"
: Táto rola ARIA identifikuje prvok ako tooltip.- CSS používa selektor susedného súrodenca (
+
) na zobrazenie tooltipu, keď je odkaz v stave hover alebo focus.
JavaScript (Pokročilá kontrola - Voliteľné):
Zatiaľ čo CSS si poradí s jednoduchým zobrazením/skrytím, JavaScript umožňuje robustnejšiu kontrolu, najmä keď sú tooltipy generované dynamicky alebo vyžadujú zložitejšie správanie.
const link = document.querySelector('a[aria-describedby="tooltip-example"]');
const tooltip = document.getElementById('tooltip-example');
link.addEventListener('focus', () => {
tooltip.style.display = 'block';
});
link.addEventListener('blur', () => {
tooltip.style.display = 'none';
});
link.addEventListener('mouseover', () => {
tooltip.style.display = 'block';
});
link.addEventListener('mouseout', () => {
tooltip.style.display = 'none';
});
2. Používanie atribútov ARIA
Atribúty ARIA sú nevyhnutné na poskytovanie sémantických informácií asistenčným technológiám. Tu je prehľad kľúčových atribútov:
aria-describedby
: Ako už bolo spomenuté, tento atribút vytvára vzťah medzi spúšťacím prvkom a prvkom tooltipu.role="tooltip"
: Tento atribút explicitne definuje prvok ako tooltip.aria-hidden="true"
/aria-hidden="false"
: Použite ich na označenie, či je tooltip momentálne viditeľný pre asistenčné technológie. Keď je tooltip skrytý, nastavtearia-hidden="true"
. Keď je viditeľný, nastavtearia-hidden="false"
. Toto je obzvlášť dôležité pri použití JavaScriptu na ovládanie viditeľnosti tooltipu.
Príklad:
<button aria-describedby="help-tooltip">Odoslať</button>
<div id="help-tooltip" role="tooltip" aria-hidden="true">Kliknite sem pre odoslanie formulára.</div>
JavaScript (pre aria-hidden):
const button = document.querySelector('button[aria-describedby="help-tooltip"]');
const tooltip = document.getElementById('help-tooltip');
button.addEventListener('focus', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('blur', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
button.addEventListener('mouseover', () => {
tooltip.setAttribute('aria-hidden', 'false');
tooltip.style.display = 'block';
});
button.addEventListener('mouseout', () => {
tooltip.setAttribute('aria-hidden', 'true');
tooltip.style.display = 'none';
});
3. Správa zamerania (focus)
Keď sa tooltip zobrazí, vo všeobecnosti by *nemal* ukradnúť focus spúšťaciemu prvku. Focus by mal zostať na prvku, ktorý tooltip spustil. Tým sa zabezpečí, že používatelia klávesnice môžu pokračovať v navigácii po stránke bez neočakávaných prerušení.
Môžu však nastať situácie, kedy *chcete* presunúť focus na tooltip, najmä ak tooltip obsahuje interaktívne prvky (napr. odkazy, tlačidlá). V takom prípade zabezpečte, aby:
- Bol tooltip vizuálne odlíšený, aby naznačoval, že má focus.
- Existoval jasný spôsob, ako vrátiť focus na pôvodný spúšťací prvok (napr. tlačidlo na zatvorenie v rámci tooltipu).
Vo väčšine prípadov je pre jednoduchosť a použiteľnosť preferované vyhnúť sa správe focusu v rámci samotného tooltipu.
4. Zabezpečenie dostatočného kontrastu
Farebný kontrast je kľúčový pre čitateľnosť. Zabezpečte, aby farba textu vo vašich tooltipoch mala dostatočný kontrast voči farbe pozadia. Smernice pre prístupnosť webového obsahu (WCAG) odporúčajú kontrastný pomer najmenej 4.5:1 pre bežný text a 3:1 pre veľký text (18pt alebo 14pt tučné).
Používajte online nástroje na kontrolu kontrastu, aby ste overili, že vaše farebné voľby spĺňajú štandardy prístupnosti. Príklady nástrojov na kontrolu kontrastu zahŕňajú:
- WebAIM Contrast Checker: https://webaim.org/resources/contrastchecker/
- Coolors: https://coolors.co/contrast-checker
Príklad (Dobrý kontrast):
.tooltip {
background-color: #000;
color: #fff;
}
Príklad (Slabý kontrast):
.tooltip {
background-color: #fff;
color: #eee;
}
5. Poskytnutie dostatočného času
Používatelia potrebujú dostatok času na prečítanie obsahu tooltipu. Vyhnite sa tooltipom, ktoré miznú príliš rýchlo. Hoci neexistuje žiadne magické číslo, snažte sa o minimálny čas zobrazenia niekoľko sekúnd. Tooltip by mal tiež zostať viditeľný, pokiaľ používateľ prechádza myšou nad spúšťacím prvkom alebo ho má zameraný. Ak potrebujete tooltip zavrieť z dôvodu iných udalostí, poskytnite indikátor, že sa tooltip zavrie.
Ak je obsah tooltipu rozsiahly, zvážte poskytnutie spôsobu, ako môže používateľ tooltip manuálne zavrieť (napr. tlačidlo na zatvorenie alebo stlačenie klávesy Escape).
6. Možnosť zatvorenia
Hoci tooltipy často zmiznú automaticky, keď používateľ pohne myšou preč alebo zruší focus, je dobrou praxou poskytnúť jasný spôsob ich manuálneho zatvorenia, najmä pre rozsiahle tooltipy alebo tooltipy obsahujúce interaktívne prvky.
Metódy zatvárania tooltipov:
- Tlačidlo na zatvorenie: Zahrňte vizuálne výrazné tlačidlo na zatvorenie v rámci tooltipu.
- Klávesa Escape: Umožnite používateľom zavrieť tooltip stlačením klávesy Escape.
- Kliknutie mimo: Zavrite tooltip, keď používateľ klikne kdekoľvek mimo tooltipu a spúšťacieho prvku. (Používajte s opatrnosťou, pretože to môže byť rušivé).
Príklad (Tlačidlo na zatvorenie):
<div id="my-tooltip" role="tooltip" aria-hidden="true">
Toto je obsah môjho tooltipu.
<button onclick="hideTooltip()">Zavrieť</button>
</div>
Príklad (Klávesa Escape):
document.addEventListener('keydown', function(event) {
if (event.key === 'Escape') {
hideTooltip(); // Nahraďte vašou skutočnou funkciou na skrytie tooltipu
}
});
7. Vyhýbanie sa nadmernému používaniu
Tooltipy by sa mali používať striedmo a len vtedy, keď poskytujú skutočne užitočné informácie. Nadmerné používanie tooltipov môže preplniť rozhranie, rozptyľovať používateľov a vytvárať frustrujúcu skúsenosť.
Alternatívy k tooltipom:
- Jasné popisky: Používajte jasné a popisné popisky pre polia formulárov, tlačidlá a odkazy.
- Kontextová pomoc: Poskytnite pomocný text priamo v rozhraní, v blízkosti relevantných prvkov.
- Dokumentácia pomocníka: Pre zložitejšie funkcie odkazujte na komplexnú dokumentáciu pomocníka.
Pokročilé úvahy
Dynamický obsah
Ak je obsah vášho tooltipu generovaný dynamicky (napr. načítaný z API alebo aktualizovaný na základe vstupu používateľa), zabezpečte, aby sa atribút aria-describedby
a viditeľnosť tooltipu zodpovedajúcim spôsobom aktualizovali. Na správu týchto aktualizácií použite JavaScript.
Umiestnenie
Dôkladne zvážte umiestnenie vašich tooltipov. Vyhnite sa ich umiestneniu tak, aby zakrývali dôležitý obsah alebo spôsobovali posuny v rozložení. Dávajte pozor na rôzne veľkosti obrazoviek a rozlíšenia a použite CSS na zabezpečenie, aby boli tooltipy vždy viditeľné v rámci zobrazovacej oblasti (viewport).
Mobilné zariadenia
Tooltipy sa tradične spoliehajú na interakcie pri prejdení myšou (hover), ktoré nie sú dostupné na dotykových zariadeniach. Pre mobilné zariadenia zvážte použitie alternatívnych interakčných metód, ako sú:
- Ťuknutie (Tap): Zobrazte tooltip, keď používateľ ťukne na prvok.
- Dlhý stisk (Long press): Zobrazte tooltip, keď používateľ dlho stlačí prvok.
- Zobraziť pri zameraní (Show on focus): Zobrazte, keď prvok získa focus. Toto možno dosiahnuť pomocou JavaScriptu, ktorý skontroluje podporu dotyku (napr.
('ontouchstart' in window)
) a podľa toho zmení správanie zobrazenia.
Testovanie vašich tooltipov
Dôkladne otestujte vaše tooltipy, aby ste sa uistili, že sú prístupné pre všetkých používateľov. Použite kombináciu manuálneho testovania a automatizovaných nástrojov na testovanie prístupnosti.
Metódy testovania:
- Navigácia pomocou klávesnice: Overte, či sú tooltipy prístupné pomocou klávesnice.
- Testovanie s čítačkou obrazovky: Použite čítačku obrazovky na overenie, či sú tooltipy správne ohlasované.
- Analýza farebného kontrastu: Použite nástroj na kontrolu farebného kontrastu na overenie dostatočného kontrastu.
- Testovanie na mobilných zariadeniach: Otestujte tooltipy na rôznych mobilných zariadeniach a veľkostiach obrazoviek.
- Automatizované testovanie prístupnosti: Použite nástroje ako axe DevTools, WAVE alebo Lighthouse na identifikáciu potenciálnych problémov s prístupnosťou.
Internacionalizácia (i18n) a lokalizácia (l10n)
Pri vývoji tooltipov pre globálne publikum majte na pamäti internacionalizáciu a lokalizáciu:
- Smer textu: Podporujte smer textu zľava doprava (LTR) aj sprava doľava (RTL). Používajte logické vlastnosti CSS (napr.
margin-inline-start
,margin-inline-end
) namiesto fyzických vlastností (napr.margin-left
,margin-right
) pre rozloženie. - Preklady pre konkrétne jazyky: Poskytnite preklady obsahu tooltipov pre rôzne jazyky.
- Formáty dátumu a času: Prispôsobte formáty dátumu a času miestnym zvyklostiam používateľa.
- Formáty čísel: Používajte príslušné formáty čísel pre rôzne regióny (napr. desatinné oddeľovače, oddeľovače tisícov).
Záver
Implementácia prístupných tooltipov si vyžaduje starostlivé plánovanie a zmysel pre detail. Dodržiavaním princípov a techník uvedených v tomto sprievodcovi môžete vytvoriť tooltipy, ktoré sú použiteľné pre každého, bez ohľadu na jeho schopnosti. Pamätajte, že prístupnosť je nepretržitý proces, preto pokračujte v testovaní a zdokonaľovaní svojich tooltipov, aby ste zaistili, že spĺňajú potreby všetkých vašich používateľov.