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łaszanepolite— ogłaszanie, gdy użytkownik zrobi przerwę; do aktualizacji niewymagających natychmiastowej reakcjiassertive— 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 bezczynnyaria-live="assertive"— ogłasza natychmiast (w przypadku błędów)aria-atomic="true"— przy zmianie ogłasza cały obszararia-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
- 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