0Pricing
HTML Academy · Lekcja

Kiedy używać ARIA zamiast natywnego HTML

Stosowanie pierwszej zasady ARIA: preferowanie natywnej semantyki

Kiedy używać ARIA zamiast natywnego HTML to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 1 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.

Czym jest ARIA?

ARIA (Accessible Rich Internet Applications) to zestaw atrybutów, które można dodawać do kodu HTML, aby poprawić dostępność dla technologii wspomagających. Uzupełnia braki występujące wtedy, gdy natywna semantyka HTML jest niewystarczająca.

Pierwsza zasada ARIA

Najważniejsza wytyczna ARIA brzmi: nie używaj ARIA, jeśli natywny HTML może wykonać dane zadanie:

<!-- BAD: ARIA on a div -->
<div role="button" tabindex="0" onclick="submit()">Submit</div>

<!-- GOOD: use a real button -->
<button type="submit">Submit</button>

<!-- Native HTML elements:
  - Are keyboard accessible by default
  - Have correct semantics built in
  - Work in more contexts
  - Require less code
-->

Gdy natywny HTML nie wystarcza

ARIA jest potrzebna, gdy:

  • Niestandardowe komponenty interfejsu nie mają odpowiednika w HTML (karty, combobox)
  • Należy zmienić rolę natywnego elementu
  • Trzeba informować o aktualizacjach dynamicznej treści
  • Należy jawnie określić złożone relacje między elementami

ARIA nie dodaje funkcjonalności

Ważne nieporozumienie: ARIA dodaje metadane dotyczące dostępności — nie dodaje funkcjonalności:

<!-- Adding role="button" to a div does NOT:
  - Make it keyboard-focusable (add tabindex="0")
  - Make Enter/Space activate it (add event listeners)
  - Make it styled like a button (add CSS)
-->

<!-- You must implement ALL behavior yourself -->
<!-- Native <button> handles all this for free -->

Taksonomia ARIA

ARIA obejmuje trzy kategorie atrybutów:

  • Role — określają, czym jest element: role="button", role="dialog"
  • Właściwości — opisują statyczne cechy: aria-label, aria-required
  • Stany — opisują warunki dynamiczne: aria-expanded, aria-checked

Semantyczny HTML a odpowiedniki ARIA

Większość elementów HTML ma już niejawnie przypisane role ARIA:

<nav>   ≡  role="navigation"
<main>  ≡  role="main"
<aside> ≡  role="complementary"
<header> ≡ role="banner" (page-level)
<footer> ≡ role="contentinfo" (page-level)
<button> ≡ role="button"
<a href> ≡ role="link"
<h1-h6> ≡ role="heading"
<ul>    ≡  role="list"

Typowe poprawne zastosowania ARIA

Przykłady uzasadnionego użycia ARIA:

<!-- 1. Custom dropdown (no native equivalent): -->
<div role="combobox" aria-expanded="false">...</div>

<!-- 2. Loading state announcement: -->
<div role="status" aria-live="polite">Loading results...</div>

<!-- 3. Override landmark label: -->
<nav aria-label="Primary navigation">...</nav>

<!-- 4. Associate error with input: -->
<input aria-describedby="error-msg">
<span id="error-msg" role="alert">Invalid email</span>

Niepoprawne użycie ARIA

Typowe błędy związane z ARIA:

<!-- BAD: ARIA role contradicts the element -->
<h2 role="button">Heading</h2>  <!-- don't turn a heading into a button -->

<!-- BAD: ARIA on an unsupported element -->
<div role="listitem">Item</div>  <!-- listitem must be inside list role -->

<!-- BAD: ARIA where HTML works fine -->
<p role="paragraph">Text</p>  <!-- p already has paragraph semantics -->

<!-- BAD: aria-label on hidden element -->
<span aria-hidden="true" aria-label="something">  <!-- contradictory -->

Role punktów orientacyjnych

Role punktów orientacyjnych ARIA pomagają użytkownikom czytników ekranu poruszać się po obszarach strony:

<div role="banner">     <!-- header for the whole page -->
<div role="navigation">  <!-- major navigation -->
<div role="main">        <!-- main content -->
<div role="complementary"> <!-- aside content -->
<div role="contentinfo"> <!-- page footer -->
<div role="search">      <!-- search form -->
<div role="form">        <!-- form with label -->

<!-- These are ONLY needed if using divs instead of semantic elements -->
<!-- Prefer the native HTML elements instead -->

Testowanie implementacji ARIA

Jak sprawdzić, czy ARIA jest użyta poprawnie:

  • Użyj panelu Accessibility w narzędziach deweloperskich Chrome lub Firefox
  • Posłuchaj za pomocą VoiceOver (Mac) lub NVDA (Windows)
  • Uruchom rozszerzenie axe DevTools
  • Sprawdź drzewo dostępności — czy odzwierciedla to, czego oczekujesz?

Pułapka aria-hidden

Typowy błąd związany z aria-hidden:

<!-- BAD: aria-hidden on element that still receives focus -->
<button aria-hidden="true">Close</button>
<!-- The button is still focusable but invisible to screen readers
     Screen reader users reach it via Tab but hear nothing -->

<!-- GOOD: for focus + hide, use hidden attribute or display:none: -->
<button hidden>Close</button>  <!-- removes from both tab order and AT -->

<!-- Or: if you must keep visible: -->
<button style="display:none" aria-hidden="true">Close</button>

Szybkie sprawdzenie

Co automatycznie zyskujesz po dodaniu role="button" do elementu div?

Podsumowanie: ARIA a natywny HTML

Najważniejsze zasady dotyczące ARIA:

  • Pierwsza zasada: gdy to możliwe, używaj natywnego HTML
  • ARIA dodaje wyłącznie semantykę — funkcjonalność musisz zaimplementować samodzielnie
  • Trzy kategorie: role, właściwości, stany
  • Role punktów orientacyjnych ułatwiają nawigację użytkownikom czytników ekranu
  • Testuj za pomocą panelu Accessibility w narzędziach deweloperskich i czytnika ekranu

Często zadawane pytania

Czy lekcja „Kiedy używać ARIA zamiast natywnego HTML” jest bezpłatna?

Tak — pełny tekst „Kiedy używać ARIA zamiast natywnego HTML” 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 „Kiedy używać ARIA zamiast natywnego HTML”?

Stosowanie pierwszej zasady ARIA: preferowanie natywnej semantyki Ć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 1 z 4.

Ile czasu zajmuje lekcja „Kiedy używać ARIA zamiast natywnego HTML”?

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

  1. Kiedy używać ARIA zamiast natywnego HTML
  2. role button alert dialog i landmark
  3. aria-label aria-labelledby i aria-describedby
  4. aria-hidden i aria-live
← Powrót do HTML Academy