🏷️
Accessibility

ARIA Attributes

Jab Semantic HTML Kaafi Nahi
💡 ARIA (Accessible Rich Internet Applications) ek "extra label" hai jab HTML khud kaafi nahi bata pata — jaise ek custom-built button (div se banaya) jo dikhta button jaisa hai lekin technically div hai, ARIA use ise screen reader ko "actually ye button hai" batane ke liye.

ARIA attributes (aria-label, aria-hidden, role, aria-expanded) extra accessibility information dete hain jab semantic HTML akela kaafi nahi hai — usually custom interactive components (jaise custom dropdowns, modals, tabs) ke liye zaroori.

GOLDEN RULE: "No ARIA is better than Bad ARIA" — agar ek native HTML element (jaise <button>) available hai, use use karo. ARIA sirf tab use karo jab genuinely koi native equivalent na ho.

<!-- Icon-only button — visual label nahi hai, aria-label zaroori: -->
<button aria-label="Close menu">✕</button>

<!-- Decorative icon — screen reader ko ignore karna chahiye: -->
<span aria-hidden="true">🎉</span>

<!-- Custom dropdown (bina native <select> ke) — role/state zaroori: -->
<div role="button" aria-expanded="false" tabindex="0">
  Menu
</div>

<!-- Better — native element use karo jab possible ho: -->
<button aria-expanded="false">Menu</button>
🏷️
ARIA (Accessible Rich Internet Applications) ek "extra label" hai jab HTML khud kaafi nahi bata pata — jaise ek custom-built button (div se banaya) jo dikhta button jaisa hai lekin technically div hai, ARIA use ise screen reader ko "actually ye button hai" batane ke liye.
1 / 2
⚡ Quick Recap
  • aria-label = jab visible text label na ho (icon buttons)
  • aria-hidden = purely decorative content ko screen readers se chhupao
  • Rule: native HTML element available ho to wahi use karo, ARIA nahi
On this page (2 subtopics)

aria-live dynamic content changes (jaise ek notification jo bina page reload ke appear hoti hai) ko screen readers ko announce karwata hai — normally screen readers sirf tab react karte hain jab focus move ho, live regions bina focus change ke bhi announce kar dete hain.

<div aria-live="polite" id="notification"></div>

<!-- JavaScript se: -->
<!-- document.getElementById('notification').textContent = "Item cart mein add ho gaya!"; -->
<!-- Screen reader automatically ye announce kar dega -->
💡Tip: aria-live="polite" current announcement khatam hone ka wait karta hai. aria-live="assertive" turant interrupt karke announce karta hai — sirf genuinely urgent cheezon (errors) ke liye use karo, overuse annoying hota hai.

aria-invalid aur role="alert" form validation errors ko accessible banate hain — screen reader users ko clearly pata chalta hai kaunsa field invalid hai aur kya error hai.

<label for="email">Email:</label>
<input type="email" id="email" aria-invalid="true" aria-describedby="email-error">
<span id="email-error" role="alert">Please enter a valid email address</span>
💡Tip: role="alert" automatically screen reader ko interrupt karke error announce karta hai — bina isके, user ko manually error message dhundna padta, jo frustrating experience hai.