HTML Academy · Lekcja

details i summary — widżet ujawniania treści

Budowanie natywnych komponentów rozwijania i zwijania bez JavaScript

Lekcja 3 z 413 kroki

details i summary — widżet ujawniania treści to bezpłatna lekcja HTML Academy na CoddyKit. To lekcja 3 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 są details i summary?

Elementy <details> i <summary> tworzą natywny widżet ujawniania — komponent rozwijania i zwijania — bez użycia JavaScriptu:

<details>
  <summary>What is HTML?</summary>
  <p>HTML (HyperText Markup Language) is the standard markup language
     used to create web pages.</p>
</details>

Jak to działa

Zachowanie podczas interakcji:

  • Domyślnie widoczny jest tylko element <summary>
  • Kliknięcie elementu summary przełącza widoczność pozostałej treści
  • Domyślnie przy elemencie summary pojawia się trójkąt rozwijania
  • JavaScript nie jest wymagany

Atrybut open

Atrybut open domyślnie rozwija element details:

<details open>
  <summary>Installation instructions</summary>
  <ol>
    <li>Download the installer</li>
    <li>Run the installer</li>
    <li>Restart your computer</li>
  </ol>
</details>
<!-- open is a boolean attribute: presence = expanded -->
<!-- Remove it to start collapsed -->

Tworzenie sekcji FAQ

Sekcje FAQ są idealnym zastosowaniem:

<h2>Frequently Asked Questions</h2>

<details>
  <summary>Is HTML5 a programming language?</summary>
  <p>No. HTML5 is a markup language that defines the structure and meaning
     of web content. Programming languages like JavaScript add logic and behavior.</p>
</details>

<details>
  <summary>Do I need to close void elements?</summary>
  <p>In HTML5, void elements like &lt;img&gt; and &lt;br&gt; do not require
     a closing slash. Both &lt;br&gt; and &lt;br /&gt; are valid.</p>
</details>

Stylizacja details i summary

Dostosuj wygląd:

details {
  border: 1px solid #e2e8f0;
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
  margin-bottom: 0.5rem;
}

summary {
  font-weight: 600;
  cursor: pointer;
  list-style: none;   /* remove default triangle */
}

summary::before {
  content: '▶ ';      /* custom arrow */
}

details[open] > summary::before {
  content: '▼ ';      /* rotate when open */
}

Usuwanie domyślnego trójkąta

Trójkąt rozwijania jest stosowany za pomocą list-style:

/* Remove the default arrow: */
summary {
  list-style: none;
}

/* Firefox: */
summary::-webkit-details-marker {
  display: none;
}

/* Then add a custom indicator: */
summary::after {
  content: '+';
  float: right;
}
details[open] summary::after {
  content: '−';
}

Zdarzenie toggle

Nasłuchuj otwierania i zamykania za pomocą zdarzenia toggle:

const details = document.querySelector('details');

details.addEventListener('toggle', () => {
  if (details.open) {
    console.log('Details opened');
    // Track analytics, load content, etc.
  } else {
    console.log('Details closed');
  }
});

Akordeon z details

Zbuduj podstawowy akordeon — w danym momencie otwarty jest tylko jeden panel:

/* Pure CSS accordion using details: */
/* Each item is a details element */
/* For exclusive open, use JavaScript: */

const allDetails = document.querySelectorAll('details');
allDetails.forEach(d => {
  d.addEventListener('toggle', () => {
    if (d.open) {
      allDetails.forEach(other => {
        if (other !== d) other.removeAttribute('open');
      });
    }
  });
});

Dostępność details i summary

Wbudowane funkcje dostępności:

  • summary otrzymuje fokus klawiatury i można go aktywować klawiszem Enter lub Spacja
  • Czytniki ekranu odczytują tekst summary oraz stan rozwinięcia
  • Ukryta treść znajduje się w DOM, ale jest ogłaszana jako ukryta do momentu rozwinięcia

Atrybut name dla akordeonu wyłącznego

HTML 2025 dodaje atrybut name do details, aby umożliwić natywny akordeon z wyłącznym otwieraniem paneli:

<details name="faq">
  <summary>Question 1</summary>
  <p>Answer 1...</p>
</details>

<details name="faq">
  <summary>Question 2</summary>
  <p>Answer 2...</p>
</details>
<!-- details with the same name act as a group -->
<!-- Opening one closes the others automatically -->
<!-- Supported in Chrome 120+ and Firefox 130+ -->

Leniwe ładowanie treści za pomocą toggle

Ładuj treść dopiero po otwarciu elementu details:

<details id="advanced">
  <summary>Load advanced settings...</summary>
  <div id="advanced-content">Loading...</div>
</details>

<script>
const d = document.getElementById('advanced');
d.addEventListener('toggle', async () => {
  if (d.open) {
    const res = await fetch('/api/settings');
    const html = await res.text();
    document.getElementById('advanced-content').innerHTML = html;
    d.removeEventListener('toggle', arguments.callee);
  }
}, { once: true });
</script>

Szybkie sprawdzenie

Który element dostarcza zawsze widoczny tekst wyzwalający w widżecie ujawniania details?

Powtórzenie: szczegóły i podsumowanie

Najważniejsze informacje o widżecie ujawniania treści:

  • <details> + <summary> — natywne rozwijanie i zwijanie bez użycia JavaScriptu
  • Atrybut open — rozwinięcie elementu przy wczytaniu
  • Zdarzenie toggle — reagowanie na rozwinięcie i zwinięcie
  • Stylowanie za pomocą CSS; usunięcie domyślnego trójkąta za pomocą list-style: none
  • Atrybut name — ekskluzywny akordeon (Chrome 120+)
Bezpłatny start

Ucz się HTML dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
40
Lekcje
159

Często zadawane pytania

Czy lekcja „details i summary — widżet ujawniania treści” jest bezpłatna?

Tak — pełny tekst „details i summary — widżet ujawniania treści” 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 „details i summary — widżet ujawniania treści”?

Budowanie natywnych komponentów rozwijania i zwijania bez JavaScript Ć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 3 z 4.

Ile czasu zajmuje lekcja „details i summary — widżet ujawniania treści”?

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. aside — treść uzupełniająca
  2. figure i figcaption — powtórzenie
  3. details i summary — widżet ujawniania treści
  4. Elementy progress i meter
← Powrót do HTML Academy