Usare <div> e <span> per strutturare componenti riutilizzabili

by Anastasia P.
SHARE
Usare <div> e <span> per strutturare componenti riutilizzabili
© Guida-HTML5.it

Introduzione

Quando si lavora in HTML, <div> e <span> sono tra gli elementi più usati, ma anche tra i più fraintesi. Molti sviluppatori li usano come “contenitori generici” senza una strategia precisa, rischiando di creare codice poco leggibile e difficile da mantenere. In realtà, questi due elementi sono molto utili quando servono a organizzare piccoli componenti riutilizzabili, soprattutto in pagine con contenuti ripetuti come card prodotto, box informativi, avvisi, badge o pillole di stato.

In questo tutorial vedremo un sotto-argomento pratico: come usare <div> e <span> per costruire componenti riutilizzabili in modo ordinato. Non parleremo di layout complessi o di semantica avanzata, ma di un caso concreto: creare una scheda informativa che può essere duplicata facilmente in più punti del sito, mantenendo il codice pulito e coerente.

L’obiettivo è capire quando usare un contenitore blocco come <div> e quando usare un elemento inline come <span>, così da rendere la struttura HTML più chiara e più semplice da estendere.

Codice completo

<div class="product-card">
  <div class="product-card__header">
    <span class="product-card__badge">Nuovo</span>
    <h3 class="product-card__title">Notebook Pro 14</h3>
  </div>

  <div class="product-card__content">
    <p class="product-card__description">
      Notebook leggero con display ad alta luminosità, batteria lunga durata e tastiera retroilluminata.
    </p>

    <p class="product-card__meta">
      Disponibile in <span class="product-card__highlight">3 colori</span> e con
      <span class="product-card__highlight">spedizione in 24 ore</span>.
    </p>
  </div>

  <div class="product-card__footer">
    <span class="product-card__price-label">Prezzo:</span>
    <strong class="product-card__price">€ 1.199</strong>
  </div>
</div>

<div class="product-card">
  <div class="product-card__header">
    <span class="product-card__badge">In offerta</span>
    <h3 class="product-card__title">Monitor UltraWide 34"</h3>
  </div>

  <div class="product-card__content">
    <p class="product-card__description">
      Monitor panoramico pensato per multitasking, editing e sviluppo software.
    </p>

    <p class="product-card__meta">
      Garanzia estesa di <span class="product-card__highlight">2 anni</span> con supporto premium.
    </p>
  </div>

  <div class="product-card__footer">
    <span class="product-card__price-label">Prezzo:</span>
    <strong class="product-card__price">€ 499</strong>
  </div>
</div>

Spiegazione

Nel codice sopra abbiamo costruito due card prodotto con la stessa struttura. Questo è un ottimo esempio di componente riutilizzabile: il contenuto cambia, ma la forma resta identica. In questi casi <div> è perfetto per dividere il componente in sezioni logiche: intestazione, contenuto e piè di pagina.

Perché usare <div>

<div> è un contenitore a livello di blocco, quindi è ideale quando devi raggruppare elementi che appartengono alla stessa area funzionale. Nel nostro esempio:

  • .product-card contiene l’intera scheda;
  • .product-card__header racchiude badge e titolo;
  • .product-card__content contiene descrizione e dettagli;
  • .product-card__footer ospita il prezzo.

Questo approccio aiuta a mantenere il codice leggibile e rende più facile applicare stili, script o modifiche future su una sezione specifica senza toccare il resto del componente.

Perché usare <span>

<span> è un elemento inline, quindi è adatto per evidenziare piccole parti di testo senza interrompere il flusso del contenuto. Nel nostro esempio lo usiamo per:

  • mostrare il badge “Nuovo” o “In offerta”;
  • evidenziare informazioni come “3 colori” o “spedizione in 24 ore”;
  • etichettare il prezzo con “Prezzo:”.

Usare <span> in questi casi evita di introdurre elementi di blocco inutili e mantiene il testo compatto e naturale.

Il principio chiave: contenitore giusto per il tipo di contenuto

Un errore comune è usare <div> ovunque, anche dentro frasi o etichette brevi. Questo può rendere il markup meno pulito e creare problemi di impaginazione. La regola pratica è semplice:

  • usa <div> per raggruppare sezioni o blocchi;
  • usa <span> per intervalli di testo inline o piccoli dettagli.

Nel nostro esempio, il titolo della card è un elemento autonomo e ben distinto, mentre il badge e le evidenziazioni sono parti di testo inserite nel contesto. Per questo la combinazione dei due elementi è naturale.

Riutilizzabilità del componente

La vera forza di questa struttura è la riusabilità. Se domani devi creare 20 card prodotto, puoi mantenere la stessa struttura HTML e cambiare solo testo, badge e prezzo. Questo rende il progetto più coerente e riduce gli errori.

In un team di sviluppo, una struttura simile aiuta anche chi legge il codice dopo di te: le classi indicano chiaramente il ruolo di ogni blocco, e il markup diventa più facile da aggiornare.

Best practice

  • Non usare <div> se esiste un elemento semantico più adatto. Se il contenuto rappresenta una navigazione, un articolo o una sezione principale, meglio usare elementi semantici dedicati.
  • Usa <span> solo per porzioni brevi di testo. Non trasformare un paragrafo intero in una serie di span: il codice diventerebbe difficile da leggere.
  • Dai nomi chiari alle classi. Classi come product-card__price o product-card__badge comunicano subito il ruolo dell’elemento.
  • Evita contenitori inutili. Se un blocco non serve davvero, non aggiungere un <div> solo per abitudine.
  • Mantieni una struttura coerente tra componenti simili. Se una card ha header, content e footer, tutte le card del progetto dovrebbero seguire lo stesso schema.
  • Usa <strong> quando il testo ha importanza semantica. Nel nostro esempio il prezzo è evidenziato con <strong>, non solo con uno stile grafico.

Seguire queste regole ti aiuta a scrivere HTML più pulito, più prevedibile e più facile da integrare con CSS e JavaScript.

Riepilogo

L’uso corretto di <div> e <span> non riguarda solo la grafica, ma anche l’organizzazione del codice. <div> è utile per costruire blocchi e sezioni riutilizzabili, mentre <span> è perfetto per evidenziare piccoli dettagli inline. Insieme permettono di creare componenti chiari, ordinati e facili da replicare.

Se impari a scegliere il contenitore giusto in base al tipo di contenuto, il tuo HTML diventerà più leggibile e il tuo lavoro più efficiente. È una competenza semplice, ma fondamentale per scrivere interfacce ben strutturate.

Approfondisci con risorse ufficiali

  • MDN Web Docs - div

    Documentazione ufficiale con spiegazione dell’elemento e dei casi d’uso.

  • MDN Web Docs - span

    Guida completa all’elemento inline e al suo impiego corretto.

  • WHATWG HTML Living Standard

    Specifica ufficiale del linguaggio HTML, utile per approfondire il comportamento degli elementi.

  • W3C HTML Specification

    Risorsa di riferimento per comprendere struttura e regole del markup HTML.

SHARE