PÔhjalik juhend dialoogide haldamiseks, keskendudes modaalsete ja mittemodaalsete akende juurdepÀÀsetavusele, et tagada kaasav kasutajakogemus.
Dialoogide haldamine: juurdepÀÀsetavuse tagamine modaalsetes ja mittemodaalsetes akendes
Kasutajaliidese (UI) disaini valdkonnas mĂ€ngivad dialoogid olulist rolli kasutajatega suhtlemisel, teabe edastamisel vĂ”i sisendi kĂŒsimisel. Need dialoogid vĂ”ivad ilmneda kas modaalsete vĂ”i mittemodaalsete akendena, millest igaĂŒks esitab unikaalseid juurdepÀÀsetavuse kaalutlusi. See juhend sĂŒveneb dialoogide haldamise keerukustesse, keskendudes juurdepÀÀsetavuse tagamisele kĂ”igile kasutajatele, olenemata nende vĂ”imetest, jĂ€rgides vĂ€ljakujunenud standardeid nagu veebisisu juurdepÀÀsetavuse suunised (WCAG) ja kasutades ligipÀÀsetavate rikaste internetirakenduste (ARIA) atribuute.
Modaalsete ja mittemodaalsete dialoogide mÔistmine
Enne juurdepÀÀsetavuse kaalutlustesse sĂŒvenemist on oluline mÀÀratleda, mida me mĂ”tleme modaalsete ja mittemodaalsete dialoogide all:
- Modaalsed dialoogid: Modaalne dialoog, tuntud ka kui modaalne aken, on kasutajaliidese element, mis loob reĆŸiimi, mis keelab pĂ”hiakna, kuid hoiab selle nĂ€htavana koos modaalse aknaga kui alamaknaga. Kasutajad peavad modaalse dialoogiga suhtlema ja selle tavaliselt sulgema (nt klĂ”psates kinnitusnupul vĂ”i "X" ikoonil), enne kui nad saavad naasta pĂ”hirakenduse aknasse. Levinud nĂ€ited on teavitusaknad, kinnitusviibad ja seadete paneelid.
- Mittemodaalsed dialoogid: Seevastu mittemodaalne dialoog vÔimaldab kasutajatel suhelda samaaegselt nii dialoogi kui ka pÔhirakenduse aknaga. Dialoog jÀÀb avatuks, blokeerimata juurdepÀÀsu teistele rakenduse osadele. NÀideteks on tööriistapalettid graafikatöötlustarkvaras vÔi vestlusaknad sÔnumsiderakendustes.
Dialoogide juurdepÀÀsetavuse kaalutlused
JuurdepÀÀsetavus on kasutajaliidese disainis esmatÀhtis. Dialoogide juurdepÀÀsetavuse tagamine tÀhendab, et kÔik kasutajad, sealhulgas puuetega inimesed, saavad neid tÔhusalt kasutada. See hÔlmab mitmesuguste kaalutluste kÀsitlemist, sealhulgas:
- Klaviatuuriga navigeerimine: Kasutajad, kes kasutavad klaviatuuriga navigeerimist, peaksid saama hÔlpsasti dialoogidesse navigeerida, nende sees liikuda ja neist vÀljuda.
- Ekraanilugeja ĂŒhilduvus: Ekraanilugejad peaksid tĂ€pselt teada andma dialoogi eesmĂ€rgi ja sisu ning kĂ”ik selles sisalduvad interaktiivsed elemendid.
- Fookuse haldamine: NÔuetekohane fookuse haldamine tagab, et klaviatuuri fookus on dialoogi avamisel sobivalt paigutatud, liigub dialoogi sees ja naaseb dialoogi sulgemisel algsele elemendile.
- Visuaalne selgus: Dialoogidel peab olema piisav kontrast teksti ja taustavÀrvide vahel ning visuaalne paigutus peab olema selge ja kergesti mÔistetav.
- Puuteala suurus: Puutetundlike liideste puhul peavad dialoogide interaktiivsetel elementidel olema piisavalt suured puutealad.
- Kognitiivne juurdepÀÀsetavus: Dialoogide keel ja sisu peavad olema selged, lĂŒhikesed ja kergesti mĂ”istetavad, minimeerides kognitiivset koormust.
ARIA atribuudid dialoogide juurdepÀÀsetavuse tagamiseks
ARIA (Accessible Rich Internet Applications) atribuudid pakuvad semantilist teavet abistavatele tehnoloogiatele, nagu ekraanilugejad, vÔimaldades neil kasutajaliidese elemente tÀpsemalt tÔlgendada ja esitada. Peamised ARIA atribuudid dialoogide juurdepÀÀsetavuse tagamiseks on:
- `role="dialog"` vÔi `role="alertdialog"`: See atribuut identifitseerib elemendi dialoogina. `alertdialog` tuleks kasutada dialoogide puhul, mis edastavad olulist vÔi kiiret teavet.
- `aria-labelledby="[pealkirja ID]"`: See atribuut seostab dialoogi pealkirja elemendiga, mis kirjeldab selle eesmÀrki.
- `aria-describedby="[kirjelduse ID]"`: See atribuut seostab dialoogi kirjeldava elemendiga, mis pakub tÀiendavat konteksti vÔi juhiseid.
- `aria-modal="true"`: See atribuut nÀitab, et dialoog on modaalne, takistades interaktsiooni elementidega vÀljaspool dialoogi. See on kriitilise tÀhtsusega modaalse kÀitumise edastamisel abistavatele tehnoloogiatele.
- `tabindex="0"`: `tabindex="0"` seadmine dialoogis olevale elemendile vÔimaldab sellel saada fookuse klaviatuuriga navigeerimise kaudu.
Modaalsete dialoogide juurdepÀÀsetavus: parimad praktikad
Modaalsed dialoogid esitavad oma blokeeriva olemuse tÔttu unikaalseid juurdepÀÀsetavuse vÀljakutseid. Siin on mÔned parimad praktikad modaalsete dialoogide juurdepÀÀsetavuse tagamiseks:
1. NÔuetekohased ARIA atribuudid
Nagu varem mainitud, on `role="dialog"` (vĂ”i `role="alertdialog"` kiireloomuliste sĂ”numite puhul), `aria-labelledby`, `aria-describedby` ja `aria-modal="true"` kasutamine dialoogi ja selle eesmĂ€rgi tuvastamiseks abistavatele tehnoloogiatele ĂŒlioluline.
NĂ€ide:
<div role="dialog" aria-labelledby="confirmation-heading" aria-modal="true">
<h2 id="confirmation-heading">Kinnita kustutamine</h2>
<p>Kas olete kindel, et soovite selle ĂŒksuse kustutada? Seda toimingut ei saa tagasi vĂ”tta.</p>
<button>Kinnita</button>
<button>TĂŒhista</button>
</div>
2. Fookuse haldamine
Kui modaalne dialoog avaneb, tuleks klaviatuuri fookus viivitamatult liigutada esimesele interaktiivsele elemendile dialoogi sees (nt esimesele nupule vÔi sisestusvÀljale). Kui dialoog sulgub, peaks fookus naasma elemendile, mis dialoogi kÀivitas.
Rakendamise kaalutlused:
- JavaScript: Kasutage JavaScripti, et fookust programmilselt seadistada sobivale elemendile, kui dialoog avaneb ja sulgub.
- Fookuse lĂ”ksustamine: Rakendage fookuse lĂ”ksustamist, et tagada klaviatuuri fookuse pĂŒsimine dialoogi sees, kui see on avatud. See takistab kasutajatel kogemata dialoogist vĂ€lja tabeldamist ja koha kaotamist. Seda saavutatakse sageli JavaScripti abil, mis kuulab tabeldusklahvi vajutusi ja vajadusel tsĂŒklib fookuse tagasi dialoogi algusesse vĂ”i lĂ”ppu.
NĂ€ide (kontseptuaalne JavaScript):
function openModal(modalId) {
const modal = document.getElementById(modalId);
modal.style.display = "block";
const firstFocusableElement = modal.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
firstFocusableElement.focus();
}
function closeModal(modalId, triggeringElementId) {
const modal = document.getElementById(modalId);
modal.style.display = "none";
const triggeringElement = document.getElementById(triggeringElementId);
triggeringElement.focus();
}
3. Klaviatuuri juurdepÀÀsetavus
Veenduge, et kÔikidele dialoogis olevatele interaktiivsetele elementidele pÀÀseb juurde ja neid saab aktiveerida klaviatuuri abil. See hÔlmab nuppe, linke, vormivÀlju ja kÔiki kohandatud juhtelemente.
Kaalutlused:
- TabulatsioonijĂ€rjestus: TabulatsioonijĂ€rjestus peab olema loogiline ja intuitiivne. Ăldiselt peaks tabulatsioonijĂ€rjestus jĂ€rgima dialoogi visuaalset paigutust.
- Klaviatuuri otseteed: Pakkuge klaviatuuri otseteid tavalistele toimingutele dialoogis (nt Escape-klahvi kasutamine dialoogi sulgemiseks vÔi Enter-klahvi kasutamine toimingu kinnitamiseks).
4. Visuaalne disain
Modaalse dialoogi visuaalne disain peaks selgelt nÀitama, et see on pÔhirakenduse aknast eraldi. Seda on vÔimalik saavutada kontrastse taustavÀrvi, selgepiirilise ÀÀrise vÔi varjuefekti abil. Lugevuse tagamiseks veenduge piisavas vÀrvikontrastis teksti ja tausta vahel.
5. Semantiline HTML
Kasutage vÔimaluse korral semantilisi HTML-elemente. NÀiteks kasutage <button> elemente nuppude jaoks, <label> elemente vormisisendite sildistamiseks ja <h2> vÔi <h3> elemente pealkirjade jaoks.
6. Rahvusvahelistamine ja lokaliseerimine
Dialoogide kujundamisel ja rakendamisel arvestage erineva kultuuritaustaga kasutajate vajadustega. See hÔlmab dialoogi sisu lokaliseeritud versioonide pakkumist ja dialoogi paigutuse kohandamist erinevatele teksti suundadele (nt paremalt vasakule keeled).
NÀide: Kinnitusdialoog, mis palub kasutajal oma konto kustutada, peab olema iga sihtkeele jaoks tÀpselt ja kultuuriliselt sobivalt tÔlgitud. Paigutus vÔib vajada ka kohandusi paremalt vasakule kirjutatavate keelte jaoks.
Mittemodaalsete dialoogide juurdepÀÀsetavus: parimad praktikad
Mittemodaalsed dialoogid, kuigi vÀhem hÀirivad kui modaalsed dialoogid, nÔuavad siiski hoolikat tÀhelepanu juurdepÀÀsetavusele. Siin on mÔned parimad praktikad:
1. Selge visuaalne eristus
Veenduge, et mittemodaalne dialoog on visuaalselt eristatav pÔhirakenduse aknast, et vÀltida segadust. Seda saab saavutada ÀÀrise, taustavÀrvi vÔi peene varju abil.
2. Fookuse haldamine
Kuigi mittemodaalsed dialoogid ei blokeeri suhtlust pĂ”hiaknaga, on Ă”ige fookuse haldamine siiski ĂŒlioluline. Kui dialoog avaneb, tuleks fookus viia esimesele interaktiivsele elemendile dialoogi sees. Kasutajad peaksid saama hĂ”lpsasti klaviatuuriga navigeerides dialoogi ja pĂ”hiakna vahel lĂŒlituda.
3. ARIA atribuudid
Kasutage `role="dialog"`, `aria-labelledby` ja `aria-describedby`, et anda abistavatele tehnoloogiatele semantilist teavet dialoogi kohta. `aria-modal="false"` vÔi `aria-modal` atribuudi puudumine on oluline, et eristada mittemodaalseid dialooge modaalsetest.
NĂ€ide:
<div role="dialog" aria-labelledby="font-settings-heading">
<h2 id="font-settings-heading">Fondi seaded</h2>
<label for="font-size">Fondi suurus:</label>
<input type="number" id="font-size" value="12">
<button>Rakenda</button>
</div>
4. Klaviatuuri juurdepÀÀsetavus
Veenduge, et kÔikidele dialoogis olevatele interaktiivsetele elementidele pÀÀseb juurde ja neid saab aktiveerida klaviatuuri abil. TabulatsioonijÀrjestus peab olema loogiline ja intuitiivne, vÔimaldades kasutajatel hÔlpsasti navigeerida dialoogi ja pÔhiakna vahel.
5. VĂ€ltige kattumist
VÀltige mittemodaalsete dialoogide paigutamist viisil, mis varjab olulist sisu pÔhirakenduse aknas. Dialoog peaks asuma selges ja ligipÀÀsetavas kohas.
6. Teadlikkus ja kommunikatsioon
Kui mittemodaalne dialoog avaneb, on kasulik kasutajat visuaalselt vÔi kuuldavalt (kasutades ARIA live-piirkondi) teavitada uue dialoogi ilmumisest, eriti kui see avaneb taustal ja ei pruugi olla kohe mÀrgatav.
Praktilised nÀited ja koodilÔigud
Vaatame mÔningaid praktilisi nÀiteid ja koodilÔike, et neid kontseptsioone illustreerida.
NĂ€ide 1: Modaalne kinnitusdialoog
<button id="delete-button" onclick="openModal('delete-confirmation-modal', 'delete-button')">Kustuta ĂŒksus</button>
<div id="delete-confirmation-modal" role="dialog" aria-labelledby="delete-heading" aria-modal="true" style="display:none;">
<h2 id="delete-heading">Kinnita kustutamine</h2>
<p>Kas olete kindel, et soovite selle ĂŒksuse kustutada? Seda toimingut ei saa tagasi vĂ”tta.</p>
<button onclick="//Delete item logic; closeModal('delete-confirmation-modal', 'delete-button')">Kinnita</button>
<button onclick="closeModal('delete-confirmation-modal', 'delete-button')">TĂŒhista</button>
</div>
NĂ€ide 2: Mittemodaalne fondi seadete dialoog
<button id="font-settings-button" onclick="openModal('font-settings-dialog', 'font-settings-button')">Fondi seaded</button>
<div id="font-settings-dialog" role="dialog" aria-labelledby="font-settings-heading" style="display:none;">
<h2 id="font-settings-heading">Fondi seaded</h2>
<label for="font-size">Fondi suurus:</label>
<input type="number" id="font-size" value="12"><br>
<label for="font-family">Fondi perekond:</label>
<select id="font-family">
<option value="Arial">Arial</option>
<option value="Verdana">Verdana</option>
<option value="Times New Roman">Times New Roman</option>
</select><br>
<button onclick="//Apply font settings logic">Rakenda</button>
</div>
Testimine ja valideerimine
PÔhjalik testimine on dialoogide juurdepÀÀsetavuse tagamiseks hÀdavajalik. See hÔlmab:
- Manuaalne testimine: Kasutage klaviatuuri ja ekraanilugejat dialoogidega navigeerimiseks ja suhtlemiseks.
- Automatiseeritud testimine: Kasutage juurdepÀÀsetavuse testimise tööriistu potentsiaalsete juurdepÀÀsetavuse probleemide tuvastamiseks. Tööriistad nagu Axe DevTools, WAVE ja Lighthouse aitavad juurdepÀÀsetavuse kontrolle automatiseerida.
- Kasutajatestimine: Viige lÀbi kasutajateste puuetega inimestega, et koguda tagasisidet dialoogide kasutatavuse ja juurdepÀÀsetavuse kohta.
WCAG vastavus
Veebisisu juurdepÀÀsetavuse suuniste (WCAG) jĂ€rgimine on ligipÀÀsetavate dialoogide loomisel ĂŒlioluline. Asjakohased WCAG edukriteeriumid hĂ”lmavad:
- 1.1.1 Mittetekstiline sisu: Pakkuge tekstilisi alternatiive mittetekstilisele sisule (nt pildid, ikoonid).
- 1.3.1 Info ja seosed: Veenduge, et teave ja seosed on edastatud mÀrgistuse vÔi andmeatribuutide kaudu.
- 1.4.3 Kontrastsus (minimaalne): Tagage piisav kontrastsus teksti ja taustavÀrvide vahel.
- 2.1.1 Klaviatuur: Tehke kogu funktsionaalsus kÀttesaadavaks klaviatuurilt.
- 2.4.3 Fookuse jÀrjestus: Veenduge, et fookuse jÀrjestus on loogiline ja intuitiivne.
- 2.4.7 Fookus nÀhtav: Veenduge, et fookuse indikaator on alati nÀhtav.
- 3.2.1 Fookuses olles: Veenduge, et komponendid ei saaks ootamatult fookust.
- 4.1.2 Nimi, roll, vÀÀrtus: Veenduge, et kÔigi kasutajaliidese komponentide nimi, roll ja vÀÀrtus on abistavate tehnoloogiate poolt programmiliselt mÀÀratavad.
Globaalsed kaalutlused
Globaalsele sihtrĂŒhmale dialoogide kujundamisel arvestage jĂ€rgmist:
- Lokaliseerimine: TÔlkige kogu tekstiline sisu sobivatesse keeltesse.
- Rahvusvahelistamine: Veenduge, et dialoogi paigutus kohandub sobivalt erinevate teksti suundade ja kultuuriliste tavadega. KuupĂ€eva ja kellaaja vormingud, valuutasĂŒmbolid ja aadressivormingud varieeruvad kultuuriti mĂ€rkimisvÀÀrselt.
- Kultuuriline tundlikkus: VĂ€ltige piltide vĂ”i sĂŒmbolite kasutamist, mis vĂ”ivad teatud kultuurides olla solvavad vĂ”i sobimatud.
NĂ€ide: Jaapanis kasutatav dialoog vĂ”ib vajada vertikaalse teksti paigutuse ja erinevate kuupĂ€evavormingute toetust vĂ”rreldes Ameerika Ăhendriikides kasutatava dialoogiga.
KokkuvÔte
JuurdepÀÀsetavate dialoogide, nii modaalsete kui ka mittemodaalsete, loomine on kaasava kasutajaliidese disaini oluline aspekt. By following the best practices outlined in this guide, adhering to WCAG guidelines, and utilizing ARIA attributes effectively, developers can ensure that all users, regardless of their abilities, can interact with dialogs seamlessly and effectively. Pidage meeles, et juurdepÀÀsetavus ei ole ainult vastavus; see on kaasavama ja Ă”iglasema kasutajakogemuse loomine kĂ”igile. Pidev testimine ja puuetega kasutajatelt tagasiside kogumine on ĂŒlioluline juurdepÀÀsetavuse probleemide tuvastamiseks ja lahendamiseks ning ĂŒldise kasutajakogemuse parandamiseks. Eelistades juurdepÀÀsetavust, saate luua dialooge, mis pole mitte ainult funktsionaalsed ja visuaalselt meeldivad, vaid ka kasutatavad ja nauditavad kĂ”igile kasutajatele ĂŒle maailma.