udemere

Accessibility

CSS accessibility

SU

CSS Accessibility Styling

Yaxshi CSS faqat chiroyli ko‘rinish uchun emas, balki hamma foydalanuvchilar – shu jumladan ko‘rish yoki harakatlanish qiyinchiligi bo‘lgan odamlar uchun ham qulay bo‘lishi kerak. Bu huquqiy talab va foydalanuvchi tajribasi sifatini oshiruvchi muhim qadamdir.


Asosiy maqsadlar

  • Kontrast → matnni o‘qish oson bo‘lsin.
  • Focus states → klaviatura foydalanuvchilari navigatsiya qilsin.
  • Responsive sizing → zoom va screen reader’lar bilan ishlasin.
  • Motion reduction → vestibulyar sezgirlikka ega foydalanuvchilar uchun.

1. Rang kontrasti

Matn va fon o‘rtasida kamida 4.5:1 kontrast bo‘lishi kerak.

/* Yaxshi misol */
.text {
  color: #000;
  background: #fff;
}
 
/* Yomon misol */
.text-light {
  color: #aaa;
  background: #fff;
}

⚡ Tavsiya: WebAIM Contrast Checker bilan tekshirib oling.


2. Focus ko‘rinishi

Klaviatura bilan foydalanadiganlar uchun fokusni aniq qilib ko‘rsatish kerak.

button:focus,
a:focus {
  outline: 2px solid #005fcc;
  outline-offset: 2px;
}

outline: none; ishlatmang, bu accessibility’ni buzadi.


3. Responsive shrift va spacing

Foydalanuvchilar sahifani zoom qilishi mumkin. Shuning uchun relative units ishlating.

body {
  font-size: 1rem; /* px emas */
  line-height: 1.5;
}
 
.container {
  max-width: 60ch; /* o‘qishga qulay matn kengligi */
}

4. Hover + Focus + Active states

Faqat rang bilan farqlash yetarli emas – border, underline yoki icon qo‘shing.

a {
  color: #005fcc;
}
 
a:hover,
a:focus {
  text-decoration: underline;
}

5. Motion reduction (prefers-reduced-motion)

Animatsiyalar ba’zi foydalanuvchilarni noqulay qilishi mumkin.

@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}

6. Accessible forms

Form elementlari doimiy fokusga ega bo‘lsin.

input:focus,
select:focus,
textarea:focus {
  outline: 2px solid #2e7d32;
}
 
label {
  display: block;
  margin-bottom: 0.5rem;
}

7. Screen reader uchun maxsus CSS

visually-hidden class matnni ekranda yashiradi, lekin screen reader o‘qiydi.

.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}

Keng tarqalgan xatolar

  1. Faqat rang bilan farqlash → rang ko‘rmaydiganlar uchun muammo.
  2. outline: none; ishlatish → klaviatura navigatsiyasi yo‘qoladi.
  3. Juda kichik shrift (12px yoki undan past) → o‘qish qiyin.
  4. Katta animatsiyalarni majburan qo‘llash → vestibulyar muammo tug‘diradi.

Amaliy maslahatlar

  • Har bir interaktiv element uchun hover + focus holatlarini qo‘shing.
  • Contrast ratio kamida 4.5:1, katta matn uchun 3:1 bo‘lishi kerak.
  • Formsiz sayt yo‘q – formalar doim accessible bo‘lishi kerak.
  • CSS kodni WCAG (Web Content Accessibility Guidelines) bo‘yicha tekshiring.

Savol-Javob

Q: Rang bilan farqlash yetarli emas, nima qilish kerak? J: Border, underline yoki icon bilan qo‘shimcha vizual feedback bering.

Q: outline yo‘qolsin, lekin fokus ko‘rinsin desam? J: outline o‘rniga box-shadow qo‘shing.

button:focus {
  box-shadow: 0 0 0 3px #005fcc;
}

Q: Accessibility foydalanuvchilar soni kam bo‘lsa, nega muhim? J: Accessibility → SEO + UX + qonuniy talab. Hammaning saytdan foydalanish huquqi bor.


Yakuniy maslahat

Accessibility = Inclusive Design. Yaxshi CSS → hamma foydalanuvchilar uchun yaxshi tajriba.

⚡ "Accessible sayt = foydalanuvchining hamma ehtiyojini hisobga olgan sayt."

Last updated on