HTML Semantico: Perché è Importante
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.
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.
L'HTML semantico si riferisce all'uso di elementi HTML che portano significato riguardo al contenuto che contengono, piuttosto che definire solo come il contenuto dovrebbe apparire. Invece di usare elementi generici <div>
e <span>
ovunque, l'HTML semantico usa elementi specifici che descrivono lo scopo e la struttura del contenuto.
Approccio non-semantico:
<div class="header">
<div class="nav">
<div class="nav-item">Home</div>
<div class="nav-item">Chi Siamo</div>
</div>
</div>
<div class="main-content">
<div class="article">
<div class="title">Titolo Articolo</div>
<div class="content">Contenuto articolo...</div>
</div>
</div>
<div class="footer">
<div class="copyright">© 2025 Nome Azienda</div>
</div>
Approccio semantico:
<header>
<nav>
<a href="/">Home</a>
<a href="/chi-siamo">Chi Siamo</a>
</nav>
</header>
<main>
<article>
<h1>Titolo Articolo</h1>
<p>Contenuto articolo...</p>
</article>
</main>
<footer>
<p>© 2025 Nome Azienda</p>
</footer>
Esploriamo gli elementi semantici più importanti e il loro uso corretto:
<header>
Rappresenta contenuto introduttivo o aiuti di navigazione. Può essere usato più volte in un documento.
<!-- Header di pagina -->
<header>
<h1>Titolo Sito Web</h1>
<nav>
<a href="/">Home</a>
<a href="/chi-siamo">Chi Siamo</a>
<a href="/contatti">Contatti</a>
</nav>
</header>
<!-- Header di articolo -->
<article>
<header>
<h2>Titolo Articolo</h2>
<p>Pubblicato il <time datetime="2025-09-04">4 Settembre 2025</time></p>
<p>Di <span class="author">Mario Rossi</span></p>
</header>
<p>Contenuto articolo...</p>
</article>
<main>
Rappresenta il contenuto principale del documento. Dovrebbe essere unico per pagina e contenere il contenuto primario.
<main>
<h1>Benvenuti nel Nostro Blog</h1>
<section>
<h2>Ultimi Articoli</h2>
<!-- Lista articoli -->
</section>
</main>
<footer>
Rappresenta informazioni footer per il suo elemento di contenuto sezionale più vicino o elemento radice sezionale.
<!-- Footer di pagina -->
<footer>
<nav>
<a href="/privacy">Privacy Policy</a>
<a href="/termini">Termini di Servizio</a>
</nav>
<p>© 2025 Nome Azienda. Tutti i diritti riservati.</p>
</footer>
<!-- Footer di articolo -->
<article>
<h2>Titolo Articolo</h2>
<p>Contenuto articolo...</p>
<footer>
<p>Tag: <a href="/tag/html">HTML</a>, <a href="/tag/css">CSS</a></p>
<p>Condividi questo articolo sui social media</p>
</footer>
</article>
<nav>
Rappresenta una sezione di link di navigazione.
<!-- Navigazione primaria -->
<nav aria-label="Navigazione primaria">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/prodotti">Prodotti</a></li>
<li><a href="/servizi">Servizi</a></li>
<li><a href="/contatti">Contatti</a></li>
</ul>
</nav>
<!-- Navigazione breadcrumb -->
<nav aria-label="Breadcrumb">
<ol>
<li><a href="/">Home</a></li>
<li><a href="/categoria">Categoria</a></li>
<li aria-current="page">Pagina Corrente</li>
</ol>
</nav>
<section>
Rappresenta un raggruppamento tematico di contenuto, tipicamente con un'intestazione.
<section>
<h2>I Nostri Servizi</h2>
<p>Offriamo una vasta gamma di servizi...</p>
<section>
<h3>Sviluppo Web</h3>
<p>Siti web e applicazioni personalizzate...</p>
</section>
<section>
<h3>Marketing Digitale</h3>
<p>SEO, social media e content marketing...</p>
</section>
</section>
<article>
Rappresenta una composizione autonoma che potrebbe essere distribuita indipendentemente.
<article>
<header>
<h2>Comprendere CSS Grid</h2>
<p>Pubblicato il <time datetime="2025-09-04">4 Settembre 2025</time></p>
</header>
<p>CSS Grid è un potente sistema di layout...</p>
<section>
<h3>Concetti Base di Grid</h3>
<p>Container grid e elementi grid...</p>
</section>
<footer>
<p>Archiviato sotto: <a href="/categoria/css">CSS</a></p>
</footer>
</article>
<aside>
Rappresenta contenuto che è tangenzialmente correlato al contenuto principale.
<!-- Sidebar -->
<aside>
<h3>Articoli Correlati</h3>
<ul>
<li><a href="/articolo1">Introduzione a HTML</a></li>
<li><a href="/articolo2">Fondamenti CSS</a></li>
</ul>
</aside>
<!-- Citazione pull all'interno dell'articolo -->
<article>
<p>Contenuto articolo normale...</p>
<aside>
<blockquote>
"L'HTML semantico è la fondazione dello sviluppo web accessibile."
</blockquote>
</aside>
<p>Altro contenuto articolo...</p>
</article>
<time>
Rappresenta un periodo specifico nel tempo o una durata.
<!-- Data specifica -->
<p>Pubblicato il <time datetime="2025-09-04">4 Settembre 2025</time></p>
<!-- Data e ora -->
<p>L'evento inizia alle <time datetime="2025-09-04T14:30:00">14:30 del 4 Settembre</time></p>
<!-- Durata -->
<p>La riunione è durata <time datetime="PT2H30M">2 ore e 30 minuti</time></p>
<mark>
Rappresenta testo che è evidenziato per scopi di riferimento.
<p>Risultati di ricerca per "<mark>HTML semantico</mark>":</p>
<p>Il termine <mark>HTML semantico</mark> si riferisce al markup che trasmette significato.</p>
<figure>
e <figcaption>
Rappresenta contenuto autonomo con una didascalia opzionale.
<figure>
<img src="grafico.png" alt="Dati vendite per Q3 2025">
<figcaption>
Le vendite sono aumentate del 25% nel Q3 2025 rispetto al trimestre precedente.
</figcaption>
</figure>
<figure>
<pre><code>
function saluta(nome) {
return `Ciao, ${nome}!`;
}
</code></pre>
<figcaption>Una semplice funzione JavaScript di saluto</figcaption>
</figure>
Ecco un esempio completo che mostra come gli elementi semantici lavorano insieme:
<!DOCTYPE html>
<html lang="it">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blog Tech - Ultimi Articoli</title>
</head>
<body>
<header>
<h1>Blog Tech Insights</h1>
<nav aria-label="Navigazione primaria">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/articoli">Articoli</a></li>
<li><a href="/chi-siamo">Chi Siamo</a></li>
<li><a href="/contatti">Contatti</a></li>
</ul>
</nav>
</header>
<main>
<section>
<h2>Ultimi Articoli</h2>
<article>
<header>
<h3>Il Futuro dello Sviluppo Web</h3>
<p>
Pubblicato il <time datetime="2025-09-04">4 Settembre 2025</time>
da <span class="author">Giulia Bianchi</span>
</p>
</header>
<p>Lo sviluppo web continua ad evolversi rapidamente...</p>
<section>
<h4>Tecnologie Emergenti</h4>
<p>Diverse tecnologie stanno plasmando il futuro...</p>
</section>
<aside>
<blockquote>
"La piattaforma web sta diventando più potente ogni giorno."
</blockquote>
</aside>
<footer>
<p>Tag:
<a href="/tag/sviluppo-web">Sviluppo Web</a>,
<a href="/tag/tecnologie-future">Tecnologie Future</a>
</p>
</footer>
</article>
<article>
<header>
<h3>CSS Grid vs Flexbox: Quando Usare Ciascuno</h3>
<p>
Pubblicato il <time datetime="2025-09-03">3 Settembre 2025</time>
da <span class="author">Marco Rossi</span>
</p>
</header>
<p>Sia CSS Grid che Flexbox sono potenti strumenti di layout...</p>
<figure>
<img src="grid-vs-flexbox.png" alt="Grafico di confronto delle funzionalità CSS Grid e Flexbox">
<figcaption>
Differenze chiave tra i sistemi di layout CSS Grid e Flexbox
</figcaption>
</figure>
<footer>
<p>Tag:
<a href="/tag/css">CSS</a>,
<a href="/tag/layout">Layout</a>
</p>
</footer>
</article>
</section>
</main>
<aside>
<section>
<h3>Articoli Popolari</h3>
<ul>
<li><a href="/articolo/html-basi">Basi HTML per Principianti</a></li>
<li><a href="/articolo/css-tips">10 Consigli CSS che Ogni Sviluppatore Dovrebbe Conoscere</a></li>
<li><a href="/articolo/js-fondamenti">Fondamenti JavaScript</a></li>
</ul>
</section>
<section>
<h3>Newsletter</h3>
<p>Iscriviti per ricevere gli ultimi articoli nella tua casella di posta.</p>
<form action="/iscrizione" method="POST">
<label for="email">Indirizzo Email:</label>
<input type="email" id="email" name="email" required>
<button type="submit">Iscriviti</button>
</form>
</section>
</aside>
<footer>
<nav aria-label="Navigazione footer">
<ul>
<li><a href="/privacy">Privacy Policy</a></li>
<li><a href="/termini">Termini di Servizio</a></li>
<li><a href="/sitemap">Mappa del Sito</a></li>
</ul>
</nav>
<p>© 2025 Blog Tech Insights. Tutti i diritti riservati.</p>
</footer>
</body>
</html>
I motori di ricerca usano l'HTML semantico per comprendere meglio la struttura e il contesto del tuo contenuto:
<!-- Struttura contenuto chiara per i motori di ricerca -->
<main>
<h1>Argomento Principale</h1>
<section>
<h2>Sottoargomento 1</h2>
<article>
<h3>Articolo Specifico</h3>
<p>Contenuto...</p>
</article>
</section>
</main>
<!-- Migliori possibilità per rich snippet -->
<article>
<header>
<h1>Come Cuocere Biscotti al Cioccolato Perfetti</h1>
<p>Pubblicato: <time datetime="2025-09-04">4 Settembre 2025</time></p>
</header>
<section>
<h2>Ingredienti</h2>
<ul>
<li>2 tazze di farina</li>
<li>1 tazza di burro</li>
<!-- Altri ingredienti -->
</ul>
</section>
<section>
<h2>Istruzioni</h2>
<ol>
<li>Preriscalda il forno a 190°C</li>
<li>Mescola gli ingredienti secchi</li>
<!-- Altri passaggi -->
</ol>
</section>
</article>
<!-- Aiuta i motori di ricerca a comprendere la struttura del sito -->
<nav aria-label="Navigazione primaria">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/prodotti">Prodotti</a></li>
<li><a href="/servizi">Servizi</a></li>
</ul>
</nav>
L'HTML semantico migliora significativamente l'accessibilità per utenti con disabilità:
<!-- I lettori di schermo possono saltare tra sezioni -->
<main>
<section>
<h2>Caratteristiche Prodotto</h2>
<!-- Contenuto -->
</section>
<section>
<h2>Prezzi</h2>
<!-- Contenuto -->
</section>
<section>
<h2>Recensioni Clienti</h2>
<!-- Contenuto -->
</section>
</main>
<!-- I lettori di schermo possono navigare per landmark -->
<header><!-- Landmark banner --></header>
<nav><!-- Landmark navigazione --></nav>
<main><!-- Landmark principale --></main>
<aside><!-- Landmark complementare --></aside>
<footer><!-- Landmark contentinfo --></footer>
<!-- Relazioni chiare tra contenuti -->
<article>
<header>
<h2>Titolo Articolo</h2>
<p>Di <span class="author">Nome Autore</span></p>
</header>
<p>Contenuto articolo...</p>
<footer>
<p>Correlato: <a href="/articolo-correlato">Articolo Correlato</a></p>
</footer>
</article>
L'HTML semantico rende il tuo codice più manutenibile e comprensibile:
<!-- Immediatamente chiaro cosa contiene ogni sezione -->
<header>
<nav><!-- Navigazione --></nav>
</header>
<main>
<section><!-- Sezioni contenuto principale --></section>
</main>
<aside>
<section><!-- Contenuto sidebar --></section>
</aside>
/* Punta direttamente agli elementi semantici */
header { /* Stili header */ }
nav { /* Stili navigazione */ }
main { /* Stili contenuto principale */ }
article { /* Stili articolo */ }
aside { /* Stili sidebar */ }
footer { /* Stili footer */ }
<!-- Altri sviluppatori comprendono immediatamente la struttura -->
<article>
<header>
<!-- Metadati articolo -->
</header>
<section>
<!-- Sezioni contenuto articolo -->
</section>
<footer>
<!-- Informazioni footer articolo -->
</footer>
</article>
Abuso di <div>
e <span>
<!-- Evita -->
<div class="article">
<div class="title">Titolo</div>
</div>
<!-- Usa invece -->
<article>
<h2>Titolo</h2>
</article>
Gerarchia intestazioni incorretta
<!-- Evita -->
<h1>Titolo Principale</h1>
<h3>Sottotitolo</h3> <!-- Saltato h2 -->
<!-- Usa invece -->
<h1>Titolo Principale</h1>
<h2>Sottotitolo</h2>
Elementi <main>
multipli
<!-- Evita -->
<main>Contenuto 1</main>
<main>Contenuto 2</main>
<!-- Usa invece -->
<main>
<section>Contenuto 1</section>
<section>Contenuto 2</section>
</main>
Usare elementi semantici solo per stilizzazione
<!-- Evita -->
<aside>Questo non è realmente contenuto aside</aside>
<!-- Usa invece -->
<div class="styled-box">Questo non è realmente contenuto aside</div>
L'HTML semantico non riguarda solo il seguire gli standard web—riguarda la creazione di un web migliore per tutti. Usando elementi semantici appropriatamente, tu:
Ricorda, l'HTML semantico è la fondazione dello sviluppo web moderno. Inizia con markup semantico, poi potenzia con CSS per la stilizzazione e JavaScript per l'interattività. Questo approccio assicura che i tuoi siti web siano accessibili, manutenibili e ottimizzati sia per utenti che per motori di ricerca.
<details>
, <summary>
e <dialog>
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.
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à.
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.