Cosa fa il tag div
<div> (abbreviazione di division, divisione) è un contenitore generico. Raggruppa gli elementi così puoi dare stile, posizionarli o gestirli con uno script come un'unica unità. Da solo non ha alcun aspetto: niente margine, niente bordo, nessun font speciale. È un elemento a blocco, quindi inizia su una nuova riga e si allarga su tutta la larghezza disponibile.
Togli la riga border dallo stile e i div diventano invisibili: è l'aspetto predefinito di un div. Tutto quello che fa visivamente viene dal CSS.
div class e id
Un div di solito ha una class, cioè il nome a cui punta il tuo CSS. I div che condividono una classe condividono lo stile:
.card dà stile a entrambi i riquadri, .card.highlight aggiunge un contorno blu al div che ha tutte e due le classi. Usa id quando devi puntare a un div preciso, per esempio come destinazione di un link (href="#pro"). La pagina sugli attributi confronta class e id nel dettaglio.
Div affiancati
Dato che i div sono blocchi, si impilano in verticale. Per metterli in fila, trasforma il loro genitore in un contenitore flex:
display: flex su .row allinea i figli, gap li distanzia e i valori di flex si dividono la larghezza (qui 1 : 2 : 1). Questo schema con genitore e figli è l'uso più comune dei div nei siti reali. Per centrare un div, vedi come centrare un div.
Div annidati
I div possono contenere altri div a qualsiasi profondità. Ogni livello è un riquadro dentro un riquadro, e lo vedi dando a ogni div un bordo e un po' di padding:
Tieni l'annidamento il più basso che il layout permette. Ogni contenitore in più è un altro riquadro a cui pensare quando un margine o una larghezza non fanno quello che ti aspetti.
div o un tag semantico?
Un div non dice niente sul suo contenuto. L'HTML ha tag che raggruppano allo stesso modo e dicono anche cos'è il gruppo:
| Invece di | Usa | Per |
|---|---|---|
<div class="header"> | <header> | Introduzione o barra superiore di una pagina o sezione |
<div class="nav"> | <nav> | Un blocco di link di navigazione |
<div class="main"> | <main> | Il contenuto principale, una volta per pagina |
<div class="post"> | <article> | Un elemento autonomo: post, commento, scheda prodotto |
<div class="footer"> | <footer> | Piè di pagina di una pagina o sezione |
Questi tag hanno esattamente l'aspetto di un div finché non gli dai stile, ma i lettori di schermo li annunciano e permettono di saltare dall'uno all'altro, e i motori di ricerca ne leggono la struttura. Usa un div per i riquadri che esistono solo per l'impaginazione o lo stile, come il contenitore .row qui sopra. La pagina sull'HTML semantico li spiega tutti.
Un div non è un pulsante
Un div con un gestore di clic sembra cliccabile a chi usa il mouse, ma chi usa la tastiera non ci arriva con Tab né può premerlo con Invio, e un lettore di schermo non lo annuncia come pulsante:
Usa <button> per le azioni e <a href> per la navigazione. Entrambi ricevono il focus e funzionano con la tastiera senza fare niente.
Errori comuni
- Un div dentro un
<p>. Il paragrafo si chiude prima del div. Fai del div l'elemento esterno, oppure usa<span>dentro il paragrafo. - Zuppa di div. Una pagina fatta solo di div non ha struttura per i lettori di schermo. Sostituisci i div con
<header>,<nav>,<main>e<footer>dove vanno bene. - Div cliccabili. Usa un
<button>o un link. - Aspettarsi che un div sia largo quanto il suo testo. Un div occupa tutta la larghezza. Usa
display: inline-block,width: fit-contento uno<span>se vuoi che si restringa. - Riusare un id su più div. Usa una classe per tutto ciò che si ripete.
Domande frequenti
Cos'è un div in HTML?
<div> è un contenitore generico. Raggruppa altri elementi così puoi dare stile o posizionarli insieme, e non ha un significato proprio: i browser lo mostrano come un blocco che inizia su una nuova riga e occupa tutta la larghezza disponibile.
Cosa significa div class?
<div class="card"> è un div con un attributo class. La classe è un nome che il CSS usa per dargli stile (.card { ... }) e JavaScript usa per trovarlo. Molti div possono condividere una classe, e un div può averne più di una: class="card featured".
Come metto due div uno accanto all'altro?
Racchiudili in un div genitore e dai al genitore display: flex. I figli si mettono in fila. Aggiungi gap per lo spazio tra loro e flex: 1 sui figli per dividere la larghezza in parti uguali.
Devo usare div o section?
Usa <section>, <header>, <nav>, <main>, <article> o <footer> quando il contenuto ha quel ruolo, perché lettori di schermo e motori di ricerca li capiscono. Usa <div> quando ti serve solo un riquadro per lo stile o l'impaginazione.
Posso mettere un div dentro un tag p?
No. Un paragrafo può contenere solo contenuto inline. Il browser chiude il <p> appena vede <div>, e questo rompe i tuoi stili. Usa il div come elemento esterno o uno <span> dentro il paragrafo.