0Pricing
HTML Academy · Lekcja

aria-hidden i aria-live

Ukrywanie elementów dekoracyjnych i ogłaszanie dynamicznych treści czytnikom ekranu

aria-hidden i aria-live to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 4 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.

aria-hidden

aria-hidden="true" usuwa element z drzewa dostępności — czytniki ekranu całkowicie go pomijają:

<!-- Decorative icon: visible but skip by screen readers -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

<!-- Decorative separator -->
<img src="divider.svg" alt="" aria-hidden="true">

<!-- Note: aria-hidden does NOT affect visibility or tab focus
     A button with aria-hidden is still tabbable! -->

Przypadki użycia aria-hidden

Odpowiednie zastosowania aria-hidden:

<!-- 1. Icons next to descriptive text -->
<button>
  <svg aria-hidden="true"><!-- icon --></svg>
  Save Document
</button>

<!-- 2. Repeated text in a card link -->
<a href="/blog/post-1">
  <span aria-hidden="true">Read more</span>
  <span class="sr-only">Read more: HTML5 Forms Guide</span>
</a>

<!-- 3. UI decoration (dots, decorative borders) -->
<span aria-hidden="true">•••</span>

Pułapka aria-hidden

Nigdy nie należy stosować aria-hidden do elementów, które mogą otrzymać fokus:

<!-- BAD: button is in tab order but invisible to screen readers -->
<button aria-hidden="true">Close</button>

<!-- Users reach this via Tab but hear nothing
     They cannot tell if they're on a button or lost focus -->

<!-- If you want to hide from both: use hidden attribute -->
<button hidden>Close</button>

<!-- Or: disabled (but disabled removes from tab order) -->
<button disabled aria-hidden="true">Close</button>

aria-live

aria-live zamienia obszar w region na żywo — zmiany są automatycznie ogłaszane:

<!-- polite: announce when user is idle -->
<div aria-live="polite" id="status"></div>

<!-- assertive: announce immediately, interrupting current speech -->
<div aria-live="assertive" id="errors"></div>

<script>
// Inject text to trigger announcement:
document.getElementById('status').textContent = 'File saved successfully.';
// Screen reader announces this without user moving focus
</script>

Wartości aria-live

Trzy wartości aria-live:

  • off — domyślnie: zmiany nie są ogłaszane
  • polite — ogłaszanie, gdy użytkownik zrobi przerwę; do aktualizacji niewymagających natychmiastowej reakcji
  • assertive — ogłaszanie natychmiastowe, przerywa bieżący komunikat; do błędów i alertów krytycznych

aria-atomic

aria-atomic określa, czy ogłaszany jest cały obszar, czy tylko zmienione fragmenty:

<div aria-live="polite" aria-atomic="true" id="timer">
  Time remaining: 05:00
</div>
<!-- aria-atomic="true": announce the whole div each update -->
<!-- Without it: only the changed text node is announced
     'Time remaining: 05:00' vs just '05:00' -->

<script>
setInterval(() => {
  document.getElementById('timer').textContent = `Time remaining: ${getTime()}`;
}, 1000);
</script>

aria-relevant

aria-relevant określa, jakie typy zmian są ogłaszane:

<div
  aria-live="polite"
  aria-relevant="additions text"   <!-- announce added content and text changes -->
  id="feed"
>
  <!-- New items added here -->
</div>
<!-- Values: additions, removals, text, all
     Default: additions text
     aria-relevant="removals" needed to announce deleted items -->

Najlepsze praktyki dotyczące regionów na żywo

Wskazówki dotyczące regionów na żywo:

  • Należy używać jednego trwałego regionu na żywo dla każdego typu komunikatu (nie należy go tworzyć i usuwać)
  • Należy rozpocząć od pustej zawartości; wstrzyknięcie tekstu wyzwala ogłoszenie
  • Komunikaty powinny być zwięzłe — czytniki ekranu przerywają bieżące komunikaty lub mogą nie nadążać
  • W przypadku stanów ładowania należy używać wartości polite
  • W przypadku błędów formularza należy używać wartości assertive lub role="alert"

Wzorce powiadomień toast

Ogłaszanie powiadomień toast za pomocą regionów na żywo:

<div
  role="status"
  aria-live="polite"
  aria-atomic="true"
  id="toast-container"
  class="sr-only"
></div>

<script>
function showToast(message) {
  const container = document.getElementById('toast-container');
  container.textContent = '';
  // Force rerender for re-announcement:
  requestAnimationFrame(() => {
    container.textContent = message;
  });
}
</script>

aria-busy

aria-busy="true" wskazuje, że zawartość jest aktualizowana:

<div id="feed" aria-live="polite" aria-busy="false">
  <!-- content -->
</div>

<script>
const feed = document.getElementById('feed');
feed.setAttribute('aria-busy', 'true');

await loadContent();
feed.innerHTML = newContent;

feed.setAttribute('aria-busy', 'false');
// Only now does the live region announce the update
</script>

Szybkie sprawdzenie

Kiedy należy używać aria-live="assertive", a kiedy aria-live="polite"?

Podsumowanie: aria-hidden i aria-live

Najważniejsze informacje o ukrywaniu elementów i regionach na żywo:

  • aria-hidden="true" — usuwa element z drzewa dostępności (nie należy stosować do elementów, które mogą otrzymać fokus!)
  • aria-live="polite" — ogłasza zmiany, gdy użytkownik jest bezczynny
  • aria-live="assertive" — ogłasza natychmiast (w przypadku błędów)
  • aria-atomic="true" — przy zmianie ogłasza cały obszar
  • aria-busy — wstrzymuje ogłoszenia podczas ładowania

Często zadawane pytania

Czy lekcja „aria-hidden i aria-live” jest bezpłatna?

Tak — pełny tekst „aria-hidden i aria-live” 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-hidden i aria-live”?

Ukrywanie elementów dekoracyjnych i ogłaszanie dynamicznych treści czytnikom ekranu Ć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 4 z 4.

Ile czasu zajmuje lekcja „aria-hidden i aria-live”?

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