0Pricing
CSS Academy · Lekcja

Komponent kart z użyciem :checked a JavaScript

Zaimplementuj interfejs kart za pomocą techniki CSS :checked i porównaj go z rozwiązaniem w JavaScript.

Komponent kart z użyciem :checked a JavaScript to bezpłatna lekcja CSS 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 CSS Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CSS Academy zawiera 4 lekcji w sumie.

Wymagania dotyczące komponentu zakładek

Komponent zakładek powinien zapewniać: wizualny wskaźnik aktywnej zakładki, powiązany panel wyświetlany lub ukrywany po wybraniu zakładki, nawigację między zakładkami za pomocą klawiatury oraz dostępne atrybuty ARIA. Można to osiągnąć za pomocą czystego CSS, wykorzystując sztuczkę :checked, albo za pomocą JavaScriptu, aby zapewnić lepszą dostępność.

Sztuczka :checked

Ukryte dane wejściowe radio służą jako stan: każda zakładka jest elementem <label> powiązanym z danymi wejściowymi radio. Gdy radio jest zaznaczone, kombinatory rodzeństwa CSS pokazują odpowiadający mu panel i stylizują etykietę aktywnej zakładki. Nie jest wymagany JavaScript.

<div class="tabs">
  <input type="radio" name="tabs" id="tab-1" checked hidden />
  <label for="tab-1">Tab One</label>
  <div id="panel-1">Panel one content</div>
</div>

Architektura CSS :checked

Umieść dane wejściowe radio, następnie wszystkie etykiety (zakładki), a potem wszystkie panele w tym samym kontenerze. Użyj kombinatora ogólnego rodzeństwa (~), aby połączyć zaznaczone radio z odpowiadającym mu panelem. Panele domyślnie mają display: none, a dopasowany panel otrzymuje display: block.

Ograniczenia podejścia :checked

Sztuczka :checked nie może aktualizować atrybutów ARIA (aria-selected, aria-controls), nie może włączyć nawigacji między zakładkami za pomocą klawiszy strzałek, a ograniczenia kolejności elementów w DOM (dane wejściowe przed panelami) mogą kolidować z wymaganiami dotyczącymi wyglądu. Luki te ograniczają rzeczywistą dostępność.

Komponent zakładek w JavaScript

Komponent zakładek w JS nasłuchuje zdarzeń click na przyciskach zakładek, ustawia aria-selected na aktywnej zakładce, aktualizuje aria-hidden na panelach i zarządza fokusem. Takie podejście umożliwia pełną zgodność z ARIA oraz wzorce interakcji klawiaturowej zgodne z ARIA Authoring Practices.

Role ARIA dla zakładek

Użyj role="tablist" na kontenerze, role="tab" na każdym przycisku zakładki wraz z aria-selected i aria-controls oraz role="tabpanel" na każdym panelu wraz z aria-labelledby. Czytniki ekranu ogłaszają liczbę zakładek, ich pozycję oraz stan zaznaczenia.

Wzorzec interakcji klawiaturowej

Zasady ARIA Authoring Practices dotyczące zakładek: klawisz Tab wprowadza fokus do listy zakładek i ustawia go na aktywnej zakładce. Arrow Left/Right przenosi fokus między zakładkami. Home/End przenosi fokus odpowiednio do pierwszej lub ostatniej zakładki. Każde przeniesienie fokusu za pomocą klawisza strzałki aktywuje zakładkę, na której znalazł się fokus (wzorzec automatycznej aktywacji).

CSS dla stanu aktywnego

Stylizuj aktywną zakładkę za pomocą dolnego obramowania lub zmiany tła, używając selektora [aria-selected="true"] — działa on zarówno z podejściem JS, jak i :checked. Dzięki temu CSS pozostaje zsynchronizowany z atrybutem stanu ARIA, co pozwala uniknąć podwójnego zarządzania stanem.

<div role="tablist">
  <button role="tab" aria-selected="true">Overview</button>
  <button role="tab" aria-selected="false">Details</button>
</div>

Animowany wskaźnik

Animowany wskaźnik kart przesuwa się między kartami: należy umieścić element wskaźnika pozycjonowany absolutnie, użyć JavaScriptu do ustawienia jego pozycji left i szerokości zgodnie z wymiarami aktywnej karty oraz dodać animację za pomocą transition: left 200ms ease, width 200ms ease.

Responsywne przepełnienie kart

Gdy karty przepełniają kontener na małych ekranach, należy użyć przewijania poziomego (overflow-x: auto; scrollbar-width: none) albo zamienić karty na rozwijaną listę wyboru na urządzeniach mobilnych. Podejście z listą wyboru wymaga użycia JS do synchronizacji natywnej listy wyboru z widocznością panelu karty.

Tylko CSS czy JS: kiedy używać którego

Hacku :checked należy używać w przypadku prostych, niekrytycznych elementów interfejsu, gdy dostępność nie jest kluczowym wymaganiem. Kart JavaScript należy używać w każdym produkcyjnym interfejsie obsługującym użytkowników klawiatury, czytników ekranu lub aplikacje wymagające zgodności z ARIA podczas audytów albo ze względów prawnych.

Sprawdzenie wiedzy

Jakie jest główne ograniczenie dostępności hacku CSS :checked w przypadku kart?

Podsumowanie

Hack :checked umożliwia przełączanie kart wyłącznie za pomocą CSS, z użyciem pól radio i kombinatorów rodzeństwa, ale nie zapewnia obsługi ARIA ani klawiatury. Karty JavaScript z rolami ARIA (tablist, tab, tabpanel), zarządzaniem aria-selected i obsługą klawiszy strzałek zapewniają kompletny, dostępny interfejs wymagany w komponentach produkcyjnych.

Często zadawane pytania

Czy lekcja „Komponent kart z użyciem :checked a JavaScript” jest bezpłatna?

Tak — pełny tekst „Komponent kart z użyciem :checked a JavaScript” 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 CSS Academy, przejdź na CoddyKit PRO. Kurs CSS Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Komponent kart z użyciem :checked a JavaScript”?

Zaimplementuj interfejs kart za pomocą techniki CSS :checked i porównaj go z rozwiązaniem w JavaScript. Ćwiczysz CSS 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ąć CSS Academy?

Nie wymagamy żadnego doświadczenia. CSS 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 „Komponent kart z użyciem :checked a JavaScript”?

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 CSS Academy?

Tak. Każda lekcja CSS 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. Komponent karty z niestandardowymi właściwościami CSS
  2. Stylowanie modali i okien dialogowych
  3. Wzorce menu rozwijanych i popoverów
  4. Komponent kart z użyciem :checked a JavaScript
← Powrót do CSS Academy