A livello puramente estetico, un <div> con classe "header" e un elemento <header> sono identici per l'utente finale. Tuttavia, per i motori di ricerca, gli screen reader e i futuri sviluppatori che metteranno mano al codice, la differenza è abissale. Scrivere in HTML semantico significa utilizzare tag che descrivono il significato del contenuto, non la sua forma. In questa guida esploreremo come trasformare il tuo codice in una struttura comprensibile e ottimizzata.

Codice Non Semantico vs Semantico

❌ Non Semantico (div soup)
<div class="header">
  <div class="nav">
    <div class="nav-item"><a href="/it/">Home</a></div>
  </div>
</div>
<div class="main">
  <div class="article">
    <div class="title">Mio Post Blog</div>
    <div class="content">...</div>
  </div>
  <div class="sidebar">...</div>
</div>
<div class="footer">...</div>
✅ Semantico
<header>
  <nav aria-label="Navigazione principale">
    <a href="/it/">Home</a>
  </nav>
</header>
<main>
  <article>
    <h1>Mio Post Blog</h1>
    <p>...</p>
  </article>
  <aside>...</aside>
</main>
<footer>...</footer>

I Principali Elementi Semantici

<header>

Rappresenta l'area introduttiva di una pagina o di una specifica sezione. Solitamente ospita il logo, il menu di navigazione e i campi di ricerca. Può essere usato anche all'interno di <article> per definire l'intestazione di un singolo post.

<nav>

Indica una sezione che contiene link di navigazione. Va utilizzato per i menu principali, i breadcrumb o gli indici dei contenuti. Non tutti i gruppi di link devono stare in un <nav>, ma solo i blocchi di navigazione principali.

<main>

Identifica il contenuto centrale e unico del documento. Deve esserci un solo <main> visibile per pagina. Esclude tutto ciò che si ripete su più pagine, come header, footer o sidebar globali.

<article>

Rappresenta una composizione autonoma che potrebbe essere distribuita indipendentemente dal resto del sito. È il tag ideale per post di blog, notizie di cronaca, schede prodotto o commenti degli utenti.

<section>

Definisce una sezione generica di un documento che raggruppa contenuti correlati tematicamente, solitamente introdotta da un titolo (H2-H6). Si usa quando non esiste un tag più specifico (come <article>).

<aside>

Contiene informazioni correlate indirettamente al contenuto principale, come sidebar, citazioni laterali, widget o box pubblicitari. Può essere posizionato sia dentro che fuori da un <article>.

<footer>

Rappresenta il piè di pagina della pagina o di una sezione. Qui trovano spazio copyright, contatti, link legali e la sitemap.

<figure> e <figcaption>

Immagine con Didascalia
<figure>
  <img src="grafico.png" alt="Grafico entrate mensili con crescita del 20%">
  <figcaption>Fig. 1: Crescita delle entrate nel primo semestre 2025</figcaption>
</figure>

<time>

Date Leggibili dalle Macchine
<time datetime="2025-07-08">8 Luglio 2025</time>
<time datetime="2025-07-08T14:30:00Z">14:30 UTC</time>

Gerarchia dei Titoli (Heading Hierarchy)

Struttura Corretta dei Titoli
<!-- ✅ Corretto — gerarchia logica -->
<h1>Titolo della Pagina</h1>
  <h2>Sezione Principale</h2>
    <h3>Sotto-argomento</h3>
    <h3>Altro Sotto-argomento</h3>
  <h2>Seconda Sezione</h2>

<!-- ❌ Errato — livelli saltati -->
<h1>Titolo della Pagina</h1>
  <h4>Titolo a caso</h4>  <!-- Salta H2 e H3! -->

Perché l'HTML Semantico è Fondamentale

  • SEO: I crawler come Google usano i tag semantici per dare peso ai contenuti. Un <nav> indica "questi sono i link interni", un <article> dice "questo è il testo che vuoi indicizzare".
  • Accessibilità: Gli screen reader utilizzano questi tag come punti di riferimento (landmark). Un utente non vedente può saltare direttamente al <main> o navigare tra gli <article> con facilità.
  • Manutenibilità: Un tag <header> è auto-esplicativo per qualsiasi sviluppatore. Una classe generica come <div class="top-box"> richiede tempo per essere interpretata.
  • Modalità Lettura: Browser come Safari e Firefox estraggono il testo principale per la "Modalità Lettura" basandosi proprio sul tag <article>.

Ottimizza il tuo Codice HTML

Utilizza i nostri strumenti gratuiti per minificare o formattare il tuo codice in un click.