Creare un accordion PE
Creare un accordion funzionante senza JavaScript e potenziarlo in seguito
Creare un accordion PE è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.
Obiettivo: un accordion funzionante senza JS
La versione PE di un accordion utilizza solo HTML, ovvero la coppia di elementi nativi <details>/<summary>. Faccia clic su summary per aprire o chiudere il pannello. Funziona senza CSS, JS o framework: è integrata nell'HTML.
<details>
<summary>What is HTML?</summary>
<p>HTML is the markup language of the web.</p>
</details>Accessibilità integrata
<summary> è un pulsante che può ricevere il focus e può essere attivato da tastiera (Enter/Space attiva o disattiva l'apertura). I lettori di schermo annunciano lo stato espanso o compresso. Due elementi HTML offrono ciò che per un accordion React personalizzato potrebbe richiedere decine di righe di ARIA e di gestione degli eventi.
Applicare gli stili CSS
Imposti con il normale CSS il triangolo di apertura, la spaziatura interna del pannello e le transizioni. L'attributo open riflette lo stato, quindi details[open] summary { color: blue; } viene applicato solo quando l'elemento è espanso. Non serve JavaScript per rifinire l'aspetto.
details { border-bottom: 1px solid #ccc; padding: 8px 0; }
summary { font-weight: bold; cursor: pointer; }
details[open] summary { color: var(--accent); }Animare apertura e chiusura
L'apertura e la chiusura predefinite sono istantanee. Può aggiungere un'animazione applicando una transizione a content-visibility oppure usando JS per misurare l'altezza del pannello e animare max-height. Nei casi semplici, il passaggio immediato è accettabile; l'animazione è un miglioramento progressivo basato su CSS e JS.
Migliorare con JavaScript
JS può aggiungere funzionalità opzionali: chiudere gli altri accordion quando se ne apre uno (modalità con un solo elemento aperto), memorizzare lo stato di apertura in localStorage, animare la transizione oppure registrare nei dati analitici quali elementi vengono espansi. Ogni miglioramento è puramente aggiuntivo.
document.querySelectorAll("details").forEach((d) => {
d.addEventListener("toggle", () => {
if (d.open) {
document.querySelectorAll("details").forEach((o) => {
if (o !== d) o.removeAttribute("open");
});
}
});
});L'evento toggle
<details> genera un evento toggle ogni volta che cambia il suo stato di apertura. Lo usi per reagire all'espansione da parte dell'utente senza riscrivere i gestori dei clic. È compatibile sia con i clic del mouse sia con l'attivazione da tastiera.
Stato renderizzato dal server
Per visualizzare inizialmente aperto un accordion, imposti l'attributo open lato server: <details open>. Lo stato è presente nell'HTML ed è accessibile ai crawler e agli utenti con connessioni lente prima dell'esecuzione di qualsiasi JS.
Quando la funzionalità integrata non basta
Se il design richiede un'icona personalizzata per l'apertura e la chiusura, una visualizzazione animata o un pannello a più colonne, realizzi una versione personalizzata, ma usi se possibile <details>/<summary> come struttura sottostante. Aggiunga ARIA solo se non può usare in alcun modo gli elementi nativi.
Verifica senza JavaScript
Disabiliti JavaScript negli strumenti per sviluppatori e verifichi che l'accordion continui a funzionare: faccia clic su summary, controlli che il pannello cambi stato, che l'ordine del focus rimanga logico e che la tastiera lo attivi. Se qualcosa non funziona, JS non è un miglioramento, ma un requisito, in violazione di PE.
Modalità a un solo elemento aperto con solo CSS
Per ottenere con stile radio l'apertura di "un solo elemento alla volta" senza JS, usi l'attributo name su <details> (supportato in Chrome/Safari): tutti gli elementi <details name="faq"> condividono lo stato, quindi l'apertura di uno chiude gli altri. Un pattern basato esclusivamente su HTML che replica il comportamento dei pulsanti radio.
Migrare da un accordion basato solo su JS
Sostituisca div+JS con <details>/<summary>, mantenendo le classi CSS per gli stili. Il risultato è un HTML più breve, senza dipendenze da JS, più accessibile e con contenuti indicizzabili. La maggior parte degli accordion basati su JS può essere migrata a PE con modifiche minime visibili all'utente.
Verifica delle conoscenze
Quale coppia di elementi HTML offre un accordion perfettamente funzionante senza JavaScript?
Riepilogo
Un accordion PE usa <details>/<summary> nativi come base: è completamente accessibile e utilizzabile da tastiera senza JS. Può aggiungere CSS per gli stili visivi e, facoltativamente, JS per le animazioni o per il comportamento con un solo elemento aperto. Verifichi, disabilitando JS, che la funzionalità di base continui a funzionare. Il nuovo attributo name consente persino una modalità con un solo elemento aperto realizzata solo con CSS.
Impara HTML con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 40
- Lezioni
- 159
Domande Frequenti
La lezione «Creare un accordion PE» è gratuita?
Sì — il testo completo di «Creare un accordion PE» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.
Cosa imparerò in «Creare un accordion PE»?
Creare un accordion funzionante senza JavaScript e potenziarlo in seguito Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare HTML Academy?
Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Creare un accordion PE»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione HTML Academy?
Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- La filosofia PE: partire dall’HTML
- Rilevamento delle funzionalità e analisi del browser a confronto
- Graceful degradation e progressive enhancement a confronto
- Creare un accordion PE