aria-label aria-labelledby i aria-describedby
Nadawanie elementom dostępnych nazw i opisów
aria-label aria-labelledby i aria-describedby to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej HTML Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs HTML Academy zawiera 4 lekcji w sumie.
Dlaczego dostępne nazwy mają znaczenie
Każdy element interaktywny potrzebuje dostępnej nazwy — ciągu tekstowego używanego przez technologię wspomagającą do jego identyfikacji. Bez dostępnej nazwy czytniki ekranu nie mogą poinformować użytkowników, do czego służy przycisk lub pole tekstowe.
aria-label
aria-label bezpośrednio przypisuje elementowi tekstową dostępną nazwę:
<button aria-label="Close dialog">×</button>
<!-- The × character has no accessible meaning
aria-label provides the name: 'Close dialog, button' -->
<input type="search" aria-label="Search products">
<!-- No visible label — aria-label provides the accessible name -->aria-labelledby
aria-labelledby wskazuje inny element jako dostępną nazwę:
<h2 id="section-title">Billing Information</h2>
<form aria-labelledby="section-title">
<!-- Form's accessible name is 'Billing Information' -->
</form>
<!-- Multiple id references: -->
<button aria-labelledby="action-verb object-name">
Delete
</button>
<span id="object-name" hidden>User Account</span>
<!-- Screen reader: 'Delete User Account, button' -->aria-describedby
aria-describedby dostarcza rozszerzony opis (uzupełnienie nazwy):
<label for="pwd">Password</label>
<input
type="password"
id="pwd"
aria-describedby="pwd-hint"
>
<p id="pwd-hint">Must be 8+ characters with one uppercase letter and one number.</p>
<!-- Screen reader: 'Password [input]' then reads the description on focus -->Etykieta a opis
Różnica między dostępną nazwą a opisem:
- Dostępna nazwa — identyfikuje element (aria-label, aria-labelledby lub element label)
- Opis — uzupełnia nazwę o dodatkowy kontekst (aria-describedby)
- Czytniki ekranu ogłaszają: nazwę, rolę, stan → a następnie opis
aria-label w punktach orientacyjnych
Używaj aria-label, aby rozróżniać wiele punktów orientacyjnych tego samego typu:
<nav aria-label="Primary">...</nav>
<nav aria-label="Breadcrumb">...</nav>
<!-- Screen reader landmark list:
'Primary, navigation'
'Breadcrumb, navigation' -->
<!-- When only one nav, aria-label is optional but still helpful -->aria-labelledby w sekcjach
Powiąż sekcje z ich nagłówkami, aby zapewnić kontekst użytkownikom czytników ekranu:
<section aria-labelledby="about-heading">
<h2 id="about-heading">About Our Team</h2>
<p>We are a team of passionate developers...</p>
</section>
<!-- Screen reader: 'About Our Team, region' when entering section -->aria-label a widoczny tekst
aria-label zastępuje widoczny tekst — zachowaj ostrożność:
<button aria-label="Delete account permanently">
Delete
</button>
<!-- Screen reader hears: 'Delete account permanently'
Sighted user reads: 'Delete' -->
<!-- Best practice: visible text and aria-label should agree
If possible, include extra context in visible text too:
<button>Delete account permanently</button> -->
<!-- aria-label should start with the visible text when possible
for speech recognition users who use voice commands -->aria-describedby dla błędów
Powiąż komunikaty o błędach z odpowiadającymi im polami:
<label for="email">Email</label>
<input
type="email"
id="email"
aria-describedby="email-error"
aria-invalid="true"
>
<span id="email-error" role="alert">
Please enter a valid email address.
</span>
<!-- When input receives focus, screen reader reads:
'Email [field], invalid. Please enter a valid email address.' -->Wiele odwołań aria-describedby
aria-describedby może wskazywać wiele elementów:
<input
type="password"
aria-label="New password"
aria-describedby="pwd-hint pwd-strength"
>
<p id="pwd-hint">Must be 8+ characters.</p>
<meter id="pwd-strength" aria-label="Password strength" value="2" max="4">Medium</meter>
<!-- Both elements are announced as the description -->Widoczne i ukryte etykiety
Gdy nie można użyć widocznej etykiety, zastosuj klasę sr-only:
<label for="search" class="sr-only">Search</label>
<input type="search" id="search" placeholder="Search...">
/* Visually hidden but in accessibility tree: */
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0,0,0,0);
white-space: nowrap;
border: 0;
}Szybkie sprawdzenie
Jaka jest różnica między aria-label a aria-labelledby?
Podsumowanie: etykiety ARIA
Najważniejsze zasady nadawania dostępnych nazw:
aria-label— nazwa tekstowa umieszczona bezpośrednio w elemencie, używana bez widocznej etykietyaria-labelledby— odwołuje się za pomocą identyfikatora id do istniejącego widocznego tekstuaria-describedby— dodatkowy opis (odczytywany po nazwie)- Preferuj widoczne etykiety i natywne elementy label HTML
- aria-label w punktach orientacyjnych pozwala rozróżniać wiele regionów tego samego typu
Często zadawane pytania
Czy lekcja „aria-label aria-labelledby i aria-describedby” jest bezpłatna?
Tak — pełny tekst „aria-label aria-labelledby i aria-describedby” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu HTML Academy, przejdź na CoddyKit PRO. Kurs HTML Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „aria-label aria-labelledby i aria-describedby”?
Nadawanie elementom dostępnych nazw i opisów Ćwiczysz HTML Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć HTML Academy?
Nie wymagamy żadnego doświadczenia. HTML Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „aria-label aria-labelledby i aria-describedby”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji HTML Academy?
Tak. Każda lekcja HTML Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Kiedy używać ARIA zamiast natywnego HTML
- role button alert dialog i landmark
- aria-label aria-labelledby i aria-describedby
- aria-hidden i aria-live