Daraxt ko'rinishi qulayligi bo'yicha keng qamrovli qo'llanma. ARIA rollari, klaviatura navigatsiyasi va foydalanuvchi tajribasini yaxshilash uchun eng yaxshi amaliyotlar.
Daraxt ko'rinishi: Ierarxik ma'lumotlar navigatsiyasi qulayligi
Daraxt ko'rinishlari ierarxik ma'lumotlarni aks ettirish uchun muhim UI komponentlaridir. Ular foydalanuvchilarga fayl tizimlari, tashkiliy jadvallar yoki veb-sayt menyulari kabi murakkab tuzilmalarda intuitiv tarzda harakat qilish imkonini beradi. Biroq, noto'g'ri tatbiq etilgan daraxt ko'rinishi, ayniqsa, ekran o'quvchilari va klaviatura navigatsiyasi kabi yordamchi texnologiyalarga tayanadigan nogironligi bo'lgan foydalanuvchilar uchun jiddiy qulaylik to'siqlarini yaratishi mumkin. Ushbu maqolada har bir kishi uchun ijobiy foydalanuvchi tajribasini ta'minlaydigan qulay daraxt ko'rinishlarini loyihalash va amalga oshirish bo'yicha keng qamrovli qo'llanma taqdim etiladi.
Daraxt ko'rinishi tuzilishini tushunish
Daraxt ko'rinishi ma'lumotlarni ierarxik, kengaytiriladigan/yig'iladigan formatda taqdim etadi. Daraxtdagi har bir tugun shoxlar va kichik shoxlarni yaratib, bolalik tugunlarga ega bo'lishi mumkin. Eng yuqori tugun ildiz tuguni deb ataladi. Qulaylik masalalariga sho'ng'ishdan oldin asosiy tuzilmani tushunish juda muhimdir.
Quyida keng tarqalgan daraxt ko'rinishi elementlarining tahlili keltirilgan:
- Daraxt: Butun daraxt tuzilishini o'z ichiga olgan umumiy konteyner elementi.
- Daraxt elementi (Treeitem): Daraxtdagi bitta tugunni ifodalaydi. U shox (kengaytiriladigan/yig'iladigan) yoki barg (bolalik tugunlari yo'q) bo'lishi mumkin.
- Guruh (Group): (Ixtiyoriy) Ota-ona daraxt elementi ichidagi bolalik daraxt elementlarini vizual ravishda guruhlaydigan konteyner.
- Ochuvchi/Yopuvchi belgi: Foydalanuvchilarga shoxni kengaytirish yoki yig'ish imkonini beruvchi vizual ko'rsatkich (masalan, plyus yoki minus belgisi, strelka).
- Yorliq: Har bir daraxt elementi uchun ko'rsatiladigan matn.
ARIA rollari va atributlarining ahamiyati
Accessible Rich Internet Applications (ARIA) — bu HTML elementlariga semantik ma'no qo'shadigan atributlar to'plami bo'lib, ularni yordamchi texnologiyalar uchun tushunarli qiladi. Daraxt ko'rinishlarini yaratishda, ARIA rollari va atributlari daraxtning tuzilishi va xatti-harakatlarini ekran o'quvchilariga yetkazish uchun juda muhimdir.
Asosiy ARIA rollari:
role="tree"
: Butun daraxtni ifodalovchi konteyner elementiga qo'llaniladi. Bu yordamchi texnologiyalarga element ierarxik ro'yxatni o'z ichiga olganligini bildiradi.role="treeitem"
: Daraxtdagi har bir tugunga qo'llaniladi. Bu har bir tugunni daraxt ichidagi element sifatida belgilaydi.role="group"
: Bolalik daraxt elementlarini vizual ravishda guruhlaydigan konteyner elementiga qo'llaniladi. Har doim ham zarur bo'lmasa-da, bu semantikani yaxshilashi mumkin.
Asosiy ARIA atributlari:
aria-expanded="true|false"
: Bolalik tugunlariga ega bo'lgan daraxt elementlariga qo'llaniladi. Shoxning hozirda kengaytirilgan (true
) yoki yig'ilgan (false
) ekanligini ko'rsatadi. Foydalanuvchi tugunni kengaytirganda yoki yig'ganda ushbu atributni JavaScript yordamida dinamik ravishda yangilang.aria-selected="true|false"
: Tugunning hozirda tanlanganligini ko'rsatish uchun daraxt elementlariga qo'llaniladi. Faqat bitta tugun tanlanishi kerak (agar sizning ilovangiz ko'p tanlovni talab qilmasa, bu holdarole="tree"
elementidaaria-multiselectable="true"
dan foydalaning).aria-label="[yorliq matni]"
yokiaria-labelledby="[yorliq elementi IDsi]"
: Daraxt yoki alohida daraxt elementlari uchun tavsiflovchi yorliqni taqdim etadi. Agar yorliq vizual ravishda mavjud bo'lmasa,aria-label
dan foydalaning; aks holda, daraxt elementini uning vizual yorlig'i bilan bog'lash uchunaria-labelledby
dan foydalaning.tabindex="0"
: Dastlab fokuslangan daraxt elementiga (odatda birinchisiga) qo'llaniladi. Boshqa barcha daraxt elementlarida ular fokuslanmaguncha (masalan, klaviatura navigatsiyasi orqali)tabindex="-1"
dan foydalaning. Bu klaviatura navigatsiyasi oqimining to'g'ri ishlashini ta'minlaydi.
ARIA tatbiqi namunasi:
Quyida ARIA atributlari yordamida daraxt ko'rinishini qanday tuzish mumkinligiga oid oddiy misol keltirilgan:
<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>
Klaviatura navigatsiyasi
Klaviatura navigatsiyasi sichqonchadan foydalana olmaydigan foydalanuvchilar uchun juda muhimdir. Yaxshi loyihalashtirilgan daraxt ko'rinishi faqat klaviatura yordamida to'liq boshqarilishi kerak. Quyida standart klaviatura o'zaro ta'sirlari keltirilgan:
- Yuqoriga strelka: Fokusni daraxtdagi oldingi tugunga o'tkazadi.
- Pastga strelka: Fokusni daraxtdagi keyingi tugunga o'tkazadi.
- Chapga strelka:
- Agar tugun kengaytirilgan bo'lsa, tugunni yig'adi.
- Agar tugun yig'ilgan bo'lsa yoki bolalik tugunlari bo'lmasa, fokusni tugunning ota-onasiga o'tkazadi.
- O'ngga strelka:
- Agar tugun yig'ilgan bo'lsa, tugunni kengaytiradi.
- Agar tugun kengaytirilgan bo'lsa, fokusni birinchi bolalik tuguniga o'tkazadi.
- Home: Fokusni daraxtdagi birinchi tugunga o'tkazadi.
- End: Fokusni daraxtdagi oxirgi ko'rinadigan tugunga o'tkazadi.
- Probel yoki Enter: Fokuslangan tugunni tanlaydi (agar tanlash qo'llab-quvvatlansa).
- Yozish (harf yoki raqam): Fokusni yozilgan belgi bilan boshlanadigan keyingi tugunga o'tkazadi. Har bir keyingi klavish bosilishi bilan qidirishni davom ettiradi.
- Plyus (+): Hozirda fokuslangan tugunni kengaytiradi (yig'ilgan holatda O'ngga strelkaga teng).
- Minus (-): Hozirda fokuslangan tugunni yig'adi (kengaytirilgan holatda Chapga strelkaga teng).
- Yulduzcha (*): Joriy darajadagi barcha tugunlarni kengaytiradi (universal qo'llab-quvvatlanmaydi, lekin ko'pincha foydali).
Klaviatura navigatsiyasi uchun JavaScript tatbiqi:
Klaviatura hodisalarini boshqarish va fokusni mos ravishda yangilash uchun sizga JavaScript kerak bo'ladi. Quyida soddalashtirilgan misol keltirilgan:
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(); // Sahifani aylantirishni oldini olish
// Oldingi daraxt elementini topish mantig'i (DOM bo'ylab harakatlanishni talab qiladi)
// ...
nextElement = findPreviousTreeitem(focusedElement);
break;
case 'ArrowDown':
event.preventDefault();
// Keyingi daraxt elementini topish mantig'i
// ...
nextElement = findNextTreeitem(focusedElement);
break;
case 'ArrowLeft':
event.preventDefault();
if (focusedElement.getAttribute('aria-expanded') === 'true') {
// Tugunni yig'ish
focusedElement.setAttribute('aria-expanded', 'false');
} else {
// Fokusni ota-onaga o'tkazish
nextElement = findParentTreeitem(focusedElement);
}
break;
case 'ArrowRight':
event.preventDefault();
if (focusedElement.getAttribute('aria-expanded') === 'false') {
// Tugunni kengaytirish
focusedElement.setAttribute('aria-expanded', 'true');
} else {
// Fokusni birinchi bolalik tuguniga o'tkazish
nextElement = findFirstChildTreeitem(focusedElement);
}
break;
case 'Home':
event.preventDefault();
nextElement = treeitems[0];
break;
case 'End':
event.preventDefault();
nextElement = treeitems[treeitems.length - 1];
break;
case ' ': // Probel
case 'Enter':
event.preventDefault();
// Fokuslangan tugunni tanlash mantig'i
selectNode(focusedElement);
break;
default:
// Shu belgi bilan boshlanadigan tugunlarga o'tish uchun belgi yozishni boshqarish
break;
}
if (nextElement) {
focusedElement.setAttribute('tabindex', '-1');
nextElement.setAttribute('tabindex', '0');
nextElement.focus();
}
});
Klaviatura navigatsiyasini amalga oshirish uchun muhim mulohazalar:
- Fokusni boshqarish: Har doim faqat bitta daraxt elementida
tabindex="0"
bo'lishini ta'minlang. Fokusni o'tkazayotganda,tabindex
atributlarini mos ravishda yangilang. - DOM bo'ylab harakatlanish: Keyingi va oldingi daraxt elementlarini, ota-ona tugunlarini va bolalik tugunlarini topish uchun DOM bo'ylab samarali harakatlaning. Ushbu jarayonni soddalashtirish uchun yordamchi funksiyalardan foydalanishni o'ylab ko'ring.
- Hodisalarning oldini olish: Strelka tugmachalarini boshqarishda brauzerning standart harakatlarini (masalan, aylantirish) bajarishini oldini olish uchun
event.preventDefault()
dan foydalaning. - Belgi yozish: Foydalanuvchilarga ma'lum bir belgi bilan boshlanadigan tugunlarga tezda o'tish imkonini beradigan belgi yozish mantig'ini amalga oshiring. Qidiruv satri qachon tozalanishi kerakligini hal qilish uchun oxirgi klavish bosilgan vaqtni saqlang.
Vizual dizayn va qulaylik
Vizual dizayn daraxt ko'rinishlarining foydalanishga yaroqliligi va qulayligida hal qiluvchi rol o'ynaydi. Quyida ba'zi yo'riqnomalar keltirilgan:
- Aniq vizual ierarxiya: Daraxt ierarxiyasini aniq ko'rsatish uchun chekinish va vizual belgilardan (masalan, papkalar va fayllar uchun turli xil belgilar) foydalaning.
- Yetarli rang kontrasti: Matn va fon, shuningdek, daraxt ko'rinishining turli elementlari o'rtasida yetarli rang kontrastini ta'minlang. Kontrast nisbatlarini tekshirish uchun WebAIM Contrast Checker kabi vositalardan foydalaning.
- Fokus ko'rsatkichi: Hozirda fokuslangan daraxt elementi uchun aniq va ko'rinadigan fokus ko'rsatkichini taqdim eting. Bu klaviatura foydalanuvchilari uchun juda muhimdir. Faqat rangga tayanmang; chegara, kontur yoki fon o'zgarishidan foydalanishni o'ylab ko'ring.
- Kengaytirish/Yig'ish ko'rsatkichlari: Kengaytirish/yig'ish ko'rsatkichlari uchun aniq va tushunarli belgilardan (masalan, plyus/minus belgilari, strelkalar) foydalaning. Ushbu belgilarning yetarli kontrastga ega ekanligiga va oson bosiladigan darajada katta ekanligiga ishonch hosil qiling.
- Ma'lumotni yetkazish uchun faqat rangdan foydalanishdan saqlaning: Daraxt elementining holatini (masalan, tanlangan, kengaytirilgan, xato) ko'rsatish uchun faqat rangga tayanmang. Matn yorliqlari yoki belgilar kabi muqobil vizual belgilarni taqdim eting.
Ekran o'quvchilari uchun mulohazalar
Ekran o'quvchisi foydalanuvchilari daraxt ko'rinishlarini tushunish va ular bilan o'zaro ishlash uchun ARIA atributlari va klaviatura navigatsiyasiga tayanadilar. Quyida ekran o'quvchisi qulayligi uchun ba'zi asosiy mulohazalar keltirilgan:
- Tavsiflovchi yorliqlar: Daraxt va alohida daraxt elementlari uchun tavsiflovchi yorliqlarni taqdim etish uchun
aria-label
yokiaria-labelledby
dan foydalaning. Bu yorliqlar qisqa va informativ bo'lishi kerak. - Holat e'lonlari: Holat o'zgarishlari (masalan, tugunni kengaytirish/yig'ish, tugunni tanlash) ekran o'quvchisi tomonidan to'g'ri e'lon qilinishini ta'minlang. Bunga
aria-expanded
vaaria-selected
atributlarini to'g'ri yangilash orqali erishiladi. - Ierarxiya e'lonlari: Ekran o'quvchilari ierarxiyadagi har bir tugunning darajasini e'lon qilishi kerak (masalan, "2-daraja, Papka 1"). Bu ARIA rollari to'g'ri amalga oshirilganda ko'pchilik ekran o'quvchilari tomonidan avtomatik ravishda boshqariladi.
- Klaviatura navigatsiyasining izchilligi: Klaviatura navigatsiyasining turli brauzerlar va ekran o'quvchilarida izchil va bashorat qilinadigan bo'lishini ta'minlang. Har qanday nomuvofiqliklarni aniqlash va hal qilish uchun daraxt ko'rinishingizni bir nechta ekran o'quvchilari (masalan, NVDA, JAWS, VoiceOver) bilan sinab ko'ring.
- Progressiv takomillashtirish: Agar JavaScript o'chirilgan bo'lsa, daraxt ko'rinishi pastroq holatda bo'lsa ham, qulay bo'lib qolishi kerak. JavaScript bo'lmasa ham asosiy darajadagi qulaylikni ta'minlash uchun semantik HTML (masalan, ichki ro'yxatlar) dan foydalanishni o'ylab ko'ring.
Brauzerlararo moslik
Qulaylik turli brauzerlar va operatsion tizimlarda izchil bo'lishi kerak. Daraxt ko'rinishingizni quyidagilarda sinchkovlik bilan sinab ko'ring:
- Ish stoli brauzerlari: Chrome, Firefox, Safari, Edge
- Mobil brauzerlar: Chrome (Android va iOS), Safari (iOS)
- Operatsion tizimlar: Windows, macOS, Linux, Android, iOS
- Ekran o'quvchilari: NVDA (Windows), JAWS (Windows), VoiceOver (macOS va iOS)
ARIA atributlari va klaviatura xatti-harakatlarini tekshirish uchun brauzer ishlab chiquvchi vositalaridan foydalaning. Har qanday nomuvofiqliklar yoki renderlash muammolariga e'tibor bering.
Sinov va tasdiqlash
Muntazam sinovlar daraxt ko'rinishingiz qulayligini ta'minlash uchun zarurdir. Quyida ba'zi sinov usullari keltirilgan:
- Qo'lda sinov: Daraxt ko'rinishida harakatlanish va barcha funksiyalarning qulay ekanligini tekshirish uchun ekran o'quvchisi va klaviaturadan foydalaning.
- Avtomatlashtirilgan sinov: Potensial qulaylik muammolarini aniqlash uchun qulaylikni sinovdan o'tkazish vositalaridan (masalan, axe DevTools, WAVE) foydalaning.
- Foydalanuvchi sinovi: Daraxt ko'rinishingiz qulayligi haqida real dunyo fikr-mulohazalarini olish uchun nogironligi bo'lgan foydalanuvchilarni sinov jarayoniga jalb qiling.
- WCAG muvofiqligi: Web Content Accessibility Guidelines (WCAG) 2.1 Level AA ga javob berishni maqsad qiling. WCAG veb-kontentni yanada qulayroq qilish uchun xalqaro miqyosda tan olingan yo'riqnomalar to'plamini taqdim etadi.
Qulay daraxt ko'rinishlari uchun eng yaxshi amaliyotlar
Quyida qulay daraxt ko'rinishlarini loyihalash va amalga oshirishda amal qilish kerak bo'lgan ba'zi eng yaxshi amaliyotlar keltirilgan:
- Semantik HTML bilan boshlang: Daraxt ko'rinishining asosiy tuzilishini yaratish uchun semantik HTML elementlaridan (masalan,
<ul>
,<li>
) foydalaning. - ARIA rollari va atributlarini qo'llang: Semantik ma'no qo'shish va yordamchi texnologiyalarga ma'lumot berish uchun ARIA rollari va atributlaridan foydalaning.
- Mustahkam klaviatura navigatsiyasini amalga oshiring: Daraxt ko'rinishi faqat klaviatura yordamida to'liq boshqarilishini ta'minlang.
- Aniq vizual belgilarni taqdim eting: Daraxt ko'rinishining ierarxiyasini, holatini va fokusini aniq ko'rsatish uchun vizual dizayndan foydalaning.
- Ekran o'quvchilari bilan sinab ko'ring: Daraxt ko'rinishining ekran o'quvchisi foydalanuvchilari uchun qulay ekanligini tekshirish uchun uni bir nechta ekran o'quvchilari bilan sinab ko'ring.
- WCAG muvofiqligini tasdiqlang: Qulaylik standartlariga javob berishini ta'minlash uchun daraxt ko'rinishini WCAG yo'riqnomalariga muvofiq tasdiqlang.
- Kodingizni hujjatlashtiring: Har bir ARIA atributi va klaviatura hodisasi ishlovchisining maqsadini tushuntirib, kodingizni aniq hujjatlashtiring.
- Kutubxona yoki freymvorkdan foydalaning (ehtiyotkorlik bilan): Nufuzli UI kutubxonasi yoki freymvorkidan tayyor daraxt ko'rinishi komponentidan foydalanishni o'ylab ko'ring. Biroq, komponentning qulaylik xususiyatlarini diqqat bilan ko'rib chiqing va uning talablaringizga javob berishiga ishonch hosil qiling. Har doim sinchkovlik bilan sinab ko'ring!
Ilg'or mulohazalar
- Kechiktirilgan yuklash (Lazy Loading): Juda katta daraxtlar uchun tugunlarni faqat kerak bo'lganda yuklash uchun kechiktirilgan yuklashni amalga oshiring. Bu ishlash samaradorligini oshirishi va dastlabki yuklanish vaqtini qisqartirishi mumkin. Kechiktirilgan yuklashning qulay tarzda amalga oshirilganligiga ishonch hosil qiling, tugunlar yuklanayotganda foydalanuvchiga tegishli fikr-mulohazalarni taqdim eting. Yuklanish holatini e'lon qilish uchun ARIA jonli hududlaridan foydalaning.
- Tortib olib tashlash (Drag and Drop): Agar sizning daraxt ko'rinishingiz tortib olib tashlash funksiyasini qo'llab-quvvatlasa, uning klaviatura foydalanuvchilari va ekran o'quvchisi foydalanuvchilari uchun ham qulay ekanligiga ishonch hosil qiling. Tugunlarni tortib olib tashlash uchun muqobil klaviatura buyruqlarini taqdim eting.
- Kontekst menyulari: Agar sizning daraxt ko'rinishingiz kontekst menyularini o'z ichiga olsa, ularning klaviatura foydalanuvchilari va ekran o'quvchisi foydalanuvchilari uchun qulay ekanligiga ishonch hosil qiling. Kontekst menyusi va uning opsiyalarini aniqlash uchun ARIA atributlaridan foydalaning.
- Globallashtirish va mahalliylashtirish: Daraxt ko'rinishingizni turli tillar va madaniyatlar uchun oson mahalliylashtiriladigan qilib loyihalashtiring. Turli matn yo'nalishlarining (masalan, o'ngdan chapga) vizual tartibga va klaviatura navigatsiyasiga ta'sirini hisobga oling.
Xulosa
Qulay daraxt ko'rinishlarini yaratish puxta rejalashtirish va amalga oshirishni talab qiladi. Ushbu maqolada keltirilgan yo'riqnomalarga amal qilib, siz daraxt ko'rinishlaringiz barcha foydalanuvchilar, jumladan, nogironligi bo'lganlar uchun ham foydalanishga yaroqli va qulay bo'lishini ta'minlashingiz mumkin. Yodda tutingki, qulaylik shunchaki texnik talab emas; bu inklyuziv dizaynning asosiy tamoyilidir.
Qulaylikni birinchi o'ringa qo'yish orqali siz qobiliyatlaridan qat'i nazar, hamma uchun yaxshiroq foydalanuvchi tajribasini yaratishingiz mumkin. Kodingizni muntazam ravishda sinab turish va tasdiqlash muhimdir. Haqiqatan ham inklyuziv foydalanuvchi interfeyslarini yaratish uchun so'nggi qulaylik standartlari va eng yaxshi amaliyotlardan xabardor bo'lib turing.