Dostępny akordeon i zakładki w JavaScript

Akordeon i zakładki w JavaScript

Dostępny akordeon i zakładki w JavaScript: kod do skopiowania | We.Inc

Akordeon w czystym JavaScript z animowaną wysokością i aria-expanded oraz zakładki obsługiwane strzałkami z roving tabindex. Oba działają na żywo na stronie, z listą kontrolną klawiatury i tabelą ARIA.

Dostępny akordeon używa prawdziwego przycisku w każdym nagłówku, z aria-expanded pokazującym, czy panel jest otwarty, i aria-controls wskazującym panel. Dostępne zakładki używają role=tablist, tab i tabpanel z aria-selected, a między zakładkami przechodzi się strzałkami, przy czym w kolejności Tab zostaje tylko wybrana zakładka. Obie demonstracje poniżej działają na żywo.

Czego użyć

Każda demonstracja to jeden samodzielny blok HTML, CSS i JavaScript. Edytuj go, a wynik uruchomi się ponownie. Potem odłóż mysz i przetestuj go klawiaturą według listy kontrolnej niżej.

Najczęściej zadawane pytania

Czy zakładki powinny przełączać się strzałką czy Enterem?

Przewodnik ARIA dopuszcza oba sposoby. Przełączanie wraz z ruchem strzałki (aktywacja automatyczna) jest najszybsze, gdy panele są już wczytane. Jeśli pokazanie panelu trwa długo, przesuwaj fokus strzałkami, a przełączaj Enterem lub Space.

Jak animować wysokość akordeonu bez mierzenia jej w JavaScript?

Zrób z panelu siatkę i animuj grid-template-rows od 0fr do 1fr, z wewnętrznym elementem z ukrytym overflow. Przeglądarka sama obliczy wysokość.

Czy element details jest dostępny?

Tak. Przeglądarki udostępniają summary jako przycisk ze stanem rozwinięcia i od razu działa on z klawiaturą. Trudniej jest ostylować znacznik i go animować, dlatego wiele stron nadal buduje własne rozwiązania.

Czy ukryte odpowiedzi w akordeonie liczą się dla SEO?

Treść, która jest w HTML, ale zwinięta, nadal jest indeksowana. Trzymaj ją w źródle strony, zamiast wczytywać po kliknięciu, i upewnij się, że widoczna odpowiedź zgadza się z tym, co jest w HTML.

Co dalej

Częste błędy

Akordeon

Dostępny akordeon z animowaną wysokością

Każdy nagłówek zawiera prawdziwy przycisk z aria-expanded i aria-controls. Wysokość animuje się przez przejście grid-rows, więc nie trzeba mierzyć scrollHeight. Wypróbuj go klawiszami Tab, Enter i Space.

Tylko jeden otwarty panel naraz

Gdy panel się otwiera, zamknij każdy inny otwarty. Niech to będzie opcjonalne: ludzie porównujący dwie odpowiedzi często chcą mieć obie otwarte.

Wersja bez JavaScript: details i summary

Natywne elementy details otwierają się i zamykają bez skryptu. Nadanie im tego samego atrybutu name sprawia, że w obecnych przeglądarkach wykluczają się wzajemnie; starsze po prostu pozwalają otworzyć kilka.

Zakładki

Zakładki z roving tabindex i strzałkami

Tylko wybrana zakładka ma tabindex 0, więc Tab wchodzi do listy zakładek raz, a potem przechodzi do panelu. Strzałki w lewo i w prawo przechodzą między zakładkami, Home i End skaczą na końce.

Lista kontrolna klawiatury i ARIA

Test klawiatury: wypróbuj każdy w demonstracjach

Ściąga ARIA

Atrybuty potrzebne każdej części

Pracujesz w React? Zacznij od naszych

komponentów zakładek w React

Zacznij za darmo · Bez karty kredytowej

Powiązane: Poradniki

Produkt

Dla kogo

Funkcje

Zasoby

Firma

Mapa strony