Liste in HTML: Liste Ordinate, Non Ordinate e di Definizione Spiegate
Padroneggia le liste HTML con questa guida completa che copre gli elementi ul, ol e dl, tecniche di annidamento, stilizzazione con CSS e migliori pratiche di accessibilità.
Padroneggia le liste HTML con questa guida completa che copre gli elementi ul, ol e dl, tecniche di annidamento, stilizzazione con CSS e migliori pratiche di accessibilità.
HTML fornisce tre tipi principali di liste, ognuno con scopi diversi:
<ul>
) - Per elementi senza un ordine specifico<ol>
) - Per elementi sequenziali o classificati<dl>
) - Per coppie termine-definizioneEsploriamo ogni tipo in dettaglio.
<ul>
per Liste PuntateLe liste non ordinate sono perfette per raggruppare elementi correlati dove l'ordine non ha importanza. Sono comunemente utilizzate per menu di navigazione, elenchi di funzionalità e organizzazione generale del contenuto.
<ul>
<li>Primo elemento</li>
<li>Secondo elemento</li>
<li>Terzo elemento</li>
</ul>
Menu di Navigazione:
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/chi-siamo">Chi Siamo</a></li>
<li><a href="/servizi">Servizi</a></li>
<li><a href="/contatti">Contatti</a></li>
</ul>
</nav>
Elenco di Funzionalità:
<ul>
<li>Design responsive</li>
<li>Tempi di caricamento veloci</li>
<li>Ottimizzato per SEO</li>
<li>Mobile-friendly</li>
<li>Compatibile con tutti i browser</li>
</ul>
Lista della Spesa:
<ul>
<li>Latte</li>
<li>Pane</li>
<li>Uova</li>
<li>Formaggio</li>
<li>Mele</li>
</ul>
Mentre il CSS moderno gestisce la maggior parte della stilizzazione, puoi ancora usare l'attributo type
:
<ul type="disc"> <!-- Default: cerchi pieni -->
<ul type="circle"> <!-- Cerchi vuoti -->
<ul type="square"> <!-- Quadrati pieni -->
Nota: L'attributo type
è deprecato in HTML5. Usa CSS invece per la stilizzazione.
<ol>
per Liste NumerateLe liste ordinate sono ideali quando la sequenza o la classificazione degli elementi è importante. Sono perfette per istruzioni, classifiche e processi passo-passo.
<ol>
<li>Primo passo</li>
<li>Secondo passo</li>
<li>Terzo passo</li>
</ol>
Attributo Start:
<ol start="5">
<li>Quinto elemento</li>
<li>Sesto elemento</li>
<li>Settimo elemento</li>
</ol>
Attributo Type:
<ol type="1"> <!-- 1, 2, 3 (default) -->
<ol type="A"> <!-- A, B, C -->
<ol type="a"> <!-- a, b, c -->
<ol type="I"> <!-- I, II, III -->
<ol type="i"> <!-- i, ii, iii -->
Attributo Reversed:
<ol reversed>
<li>Terzo posto</li>
<li>Secondo posto</li>
<li>Primo posto</li>
</ol>
<!-- Visualizza come: 3. Terzo posto, 2. Secondo posto, 1. Primo posto -->
Istruzioni per Ricetta:
<h3>Come Fare i Biscotti con Gocce di Cioccolato</h3>
<ol>
<li>Preriscalda il forno a 190°C</li>
<li>Mescola farina, bicarbonato e sale in una ciotola</li>
<li>Monta burro e zuccheri in una ciotola separata</li>
<li>Aggiungi uova e vaniglia al composto di burro</li>
<li>Incorpora gradualmente il composto di farina</li>
<li>Aggiungi le gocce di cioccolato</li>
<li>Forma palline e disponile su teglie non unte</li>
<li>Cuoci per 9-11 minuti fino a doratura</li>
</ol>
Top 5 Linguaggi di Programmazione:
<h3>Linguaggi di Programmazione Più Popolari 2024</h3>
<ol>
<li>JavaScript</li>
<li>Python</li>
<li>Java</li>
<li>TypeScript</li>
<li>C#</li>
</ol>
Passi di Installazione:
<h3>Guida all'Installazione del Software</h3>
<ol>
<li>Scarica l'installer dal nostro sito web</li>
<li>Esegui l'installer come amministratore</li>
<li>Accetta l'accordo di licenza</li>
<li>Scegli la directory di installazione</li>
<li>Seleziona i componenti da installare</li>
<li>Clicca "Installa" e attendi il completamento</li>
<li>Riavvia il computer quando richiesto</li>
</ol>
Puoi annidare liste all'interno di altre liste per creare strutture gerarchiche. Questo è utile per creare sotto-menu, schemi dettagliati e strutture organizzative complesse.
<ul>
<li>Sviluppo Web
<ul>
<li>Frontend
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
</li>
<li>Backend
<ul>
<li>Node.js</li>
<li>Python</li>
<li>PHP</li>
</ul>
</li>
</ul>
</li>
<li>Sviluppo Mobile
<ul>
<li>iOS</li>
<li>Android</li>
<li>React Native</li>
</ul>
</li>
</ul>
<ol>
<li>Fase di Pianificazione
<ol type="a">
<li>Definire i requisiti</li>
<li>Creare wireframe</li>
<li>Progettare mockup</li>
</ol>
</li>
<li>Fase di Sviluppo
<ol type="a">
<li>Configurare l'ambiente di sviluppo</li>
<li>Costruire le funzionalità principali</li>
<li>Implementare l'interfaccia utente</li>
</ol>
</li>
<li>Fase di Test
<ol type="a">
<li>Test unitari</li>
<li>Test di integrazione</li>
<li>Test di accettazione utente</li>
</ol>
</li>
</ol>
<ol>
<li>Opzioni per la Colazione
<ul>
<li>Cereali
<ul>
<li>Cornflakes</li>
<li>Avena</li>
<li>Granola</li>
</ul>
</li>
<li>Opzioni Calde
<ul>
<li>Pancake</li>
<li>Waffle</li>
<li>French Toast</li>
</ul>
</li>
</ul>
</li>
<li>Opzioni per il Pranzo
<ul>
<li>Panini</li>
<li>Insalate</li>
<li>Zuppe</li>
</ul>
</li>
</ol>
<dl>
, <dt>
e <dd>
per le DefinizioniLe liste di definizione sono perfette per glossari, FAQ, specifiche di prodotto e qualsiasi contenuto che abbina termini con le loro descrizioni.
<dl>
<dt>Termine 1</dt>
<dd>Definizione o descrizione del termine 1</dd>
<dt>Termine 2</dt>
<dd>Definizione o descrizione del termine 2</dd>
</dl>
Glossario:
<dl>
<dt>HTML</dt>
<dd>HyperText Markup Language - il linguaggio di markup standard per creare pagine web</dd>
<dt>CSS</dt>
<dd>Cascading Style Sheets - utilizzato per descrivere la presentazione di un documento scritto in HTML</dd>
<dt>JavaScript</dt>
<dd>Un linguaggio di programmazione che abilita pagine web interattive e contenuto dinamico</dd>
<dt>Design Responsive</dt>
<dd>Un approccio al web design che fa sì che le pagine web si visualizzino bene su vari dispositivi e dimensioni dello schermo</dd>
</dl>
Specifiche del Prodotto:
<dl>
<dt>Dimensione Schermo</dt>
<dd>15,6 pollici</dd>
<dt>Risoluzione</dt>
<dd>1920 x 1080 pixel</dd>
<dt>Processore</dt>
<dd>Intel Core i7-11800H</dd>
<dt>Memoria</dt>
<dd>16GB DDR4 RAM</dd>
<dt>Archiviazione</dt>
<dd>512GB SSD</dd>
<dt>Peso</dt>
<dd>1,9 kg</dd>
</dl>
Sezione FAQ:
<dl>
<dt>Qual è la vostra politica di reso?</dt>
<dd>Offriamo una politica di reso di 30 giorni per tutti gli articoli non utilizzati nella confezione originale. I costi di spedizione per il reso sono a carico del cliente a meno che l'articolo non fosse difettoso.</dd>
<dt>Quanto tempo richiede la spedizione?</dt>
<dd>La spedizione standard richiede 3-5 giorni lavorativi. La spedizione espressa richiede 1-2 giorni lavorativi. La spedizione internazionale varia in base alla località.</dd>
<dt>Offrite supporto clienti?</dt>
<dd>Sì, forniamo supporto clienti 24/7 via email, telefono e chat dal vivo. Il nostro team di supporto è sempre pronto ad aiutare con qualsiasi domanda o problema.</dd>
</dl>
Un termine può avere descrizioni multiple:
<dl>
<dt>JavaScript</dt>
<dd>Un linguaggio di programmazione di alto livello</dd>
<dd>Comunemente utilizzato per lo sviluppo web</dd>
<dd>Supporta paradigmi di programmazione orientata agli oggetti e funzionale</dd>
<dt>Python</dt>
<dd>Un linguaggio di programmazione interpretato di alto livello</dd>
<dd>Conosciuto per la sua sintassi semplice e leggibile</dd>
<dd>Popolare per data science, sviluppo web e automazione</dd>
</dl>
Termini multipli possono condividere la stessa descrizione:
<dl>
<dt>Frontend</dt>
<dt>Lato Client</dt>
<dt>Interfaccia Utente</dt>
<dd>La parte di un sito web o applicazione con cui gli utenti interagiscono direttamente</dd>
<dt>Backend</dt>
<dt>Lato Server</dt>
<dd>La logica lato server e l'infrastruttura che alimenta un sito web o applicazione</dd>
</dl>
Mentre HTML fornisce la struttura, CSS dà vita alle liste con stilizzazione personalizzata.
/* Rimuovi stilizzazione predefinita */
ul, ol {
list-style: none;
padding: 0;
margin: 0;
}
/* Punti elenco personalizzati */
ul li {
position: relative;
padding-left: 20px;
}
ul li::before {
content: "•";
color: #007bff;
font-weight: bold;
position: absolute;
left: 0;
}
.nav-list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
gap: 20px;
}
.nav-list li {
display: inline-block;
}
.nav-list a {
text-decoration: none;
color: #333;
padding: 10px 15px;
border-radius: 5px;
transition: background-color 0.3s;
}
.nav-list a:hover {
background-color: #f0f0f0;
}
<ul class="nav-list">
<li><a href="/">Home</a></li>
<li><a href="/chi-siamo">Chi Siamo</a></li>
<li><a href="/servizi">Servizi</a></li>
<li><a href="/contatti">Contatti</a></li>
</ul>
.custom-ordered {
counter-reset: item;
padding: 0;
list-style: none;
}
.custom-ordered li {
counter-increment: item;
margin-bottom: 10px;
padding-left: 40px;
position: relative;
}
.custom-ordered li::before {
content: counter(item);
background: #007bff;
color: white;
width: 25px;
height: 25px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
position: absolute;
left: 0;
top: 0;
font-weight: bold;
font-size: 14px;
}
.styled-dl {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 10px 20px;
max-width: 600px;
}
.styled-dl dt {
font-weight: bold;
color: #333;
padding: 10px 0;
border-bottom: 1px solid #eee;
}
.styled-dl dd {
padding: 10px 0;
margin: 0;
border-bottom: 1px solid #eee;
color: #666;
}
.nested-list {
list-style: none;
padding: 0;
}
.nested-list li {
margin: 5px 0;
padding-left: 20px;
position: relative;
}
.nested-list > li::before {
content: "▶";
position: absolute;
left: 0;
color: #007bff;
}
.nested-list ul {
margin-top: 10px;
padding-left: 20px;
}
.nested-list ul li::before {
content: "▸";
color: #666;
}
Rendere le liste accessibili assicura che tutti gli utenti possano navigare e comprendere il tuo contenuto efficacemente.
<!-- Buono: Navigazione semantica -->
<nav aria-label="Navigazione principale">
<ul>
<li><a href="/" aria-current="page">Home</a></li>
<li><a href="/chi-siamo">Chi Siamo</a></li>
<li><a href="/contatti">Contatti</a></li>
</ul>
</nav>
<!-- Buono: Scopo della lista chiaro -->
<h3>Documenti Richiesti</h3>
<ul>
<li>Patente di guida o carta d'identità</li>
<li>Prova di reddito</li>
<li>Estratti conto bancari</li>
</ul>
<ul aria-label="Link ai social media">
<li><a href="#" aria-label="Seguici su Facebook">Facebook</a></li>
<li><a href="#" aria-label="Seguici su Twitter">Twitter</a></li>
<li><a href="#" aria-label="Seguici su Instagram">Instagram</a></li>
</ul>
/* Assicurati che gli indicatori di focus siano visibili */
.nav-list a:focus {
outline: 2px solid #007bff;
outline-offset: 2px;
}
/* Link salta al contenuto */
.skip-link {
position: absolute;
top: -40px;
left: 6px;
background: #000;
color: white;
padding: 8px;
text-decoration: none;
z-index: 1000;
}
.skip-link:focus {
top: 6px;
}
<!-- Sbagliato: Usare liste solo per la stilizzazione -->
<ul>
<li><div>Contenuto non realmente correlato</div></li>
<li><div>Solo per la stilizzazione CSS</div></li>
</ul>
<!-- Corretto: Usa elementi appropriati -->
<div class="card-grid">
<div class="card">Contenuto 1</div>
<div class="card">Contenuto 2</div>
</div>
<!-- Sbagliato: Contenuto diretto nella lista -->
<ul>
Testo direttamente nella lista
<li>Primo elemento</li>
<li>Secondo elemento</li>
</ul>
<!-- Corretto: Tutto il contenuto negli elementi lista -->
<ul>
<li>Testo in un elemento lista</li>
<li>Primo elemento</li>
<li>Secondo elemento</li>
</ul>
<!-- Sbagliato: Elemento lista fuori dal genitore -->
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
</ul>
<li>Elemento orfano</li>
<!-- Corretto: Annidamento appropriato -->
<ul>
<li>Elemento 1</li>
<li>Elemento 2</li>
<li>Elemento 3</li>
</ul>
<!-- Sbagliato: Lista non ordinata per passi -->
<ul>
<li>Prima, fai questo</li>
<li>Poi, fai quello</li>
<li>Infine, fai questo</li>
</ul>
<!-- Corretto: Lista ordinata per passi sequenziali -->
<ol>
<li>Prima, fai questo</li>
<li>Poi, fai quello</li>
<li>Infine, fai questo</li>
</ol>
.custom-counter {
counter-reset: section;
list-style: none;
padding: 0;
}
.custom-counter li {
counter-increment: section;
margin-bottom: 10px;
}
.custom-counter li::before {
content: "Passo " counter(section) ": ";
font-weight: bold;
color: #007bff;
}
<ul class="interactive-list">
<li>
<input type="checkbox" id="task1">
<label for="task1">Completare proposta progetto</label>
</li>
<li>
<input type="checkbox" id="task2">
<label for="task2">Rivedere feedback cliente</label>
</li>
<li>
<input type="checkbox" id="task3">
<label for="task3">Aggiornare timeline progetto</label>
</li>
</ul>
.interactive-list {
list-style: none;
padding: 0;
}
.interactive-list li {
margin: 10px 0;
padding: 10px;
background: #f9f9f9;
border-radius: 5px;
}
.interactive-list input[type="checkbox"] {
margin-right: 10px;
}
.interactive-list input[type="checkbox"]:checked + label {
text-decoration: line-through;
color: #666;
}
Le liste HTML sono strumenti potenti per organizzare e presentare informazioni efficacemente. Comprendendo quando e come usare liste non ordinate, ordinate e di definizione, puoi creare contenuto web ben strutturato, accessibile e user-friendly.
Ricorda che la chiave per un uso efficace delle liste è scegliere il tipo giusto per il significato e lo scopo del tuo contenuto. Combinato con stilizzazione CSS ponderata e considerazioni di accessibilità, le liste diventano elementi fondamentali per creare esperienze web coinvolgenti e professionali.
Inizia a implementare queste tecniche per le liste nei tuoi progetti, e noterai un'organizzazione del contenuto migliorata, una migliore esperienza utente e un'accessibilità potenziata sui tuoi siti web.
Continua a leggere con questi articoli correlati
Padroneggia le immagini HTML con questa guida completa che copre il tag img, testo alternativo, formati file, immagini responsive, srcset e ottimizzazione delle prestazioni web.
Impara le tabelle HTML dalle basi alle tecniche avanzate. Padroneggia gli elementi table, tr, td, th, accessibilità, design responsive e quando usare le tabelle correttamente.
Impara a creare form HTML interattivi con tipi di input, etichette, pulsanti e validazione di base. Padroneggia l'accessibilità dei form e le migliori pratiche.
Scopri il potere degli elementi HTML semantici come header, footer, article e section. Impara come il markup semantico migliora SEO, accessibilità e manutenibilità del codice.