Menu

Colore di sfondo CSS: pagine, elementi e trasparenza

background-color riempie di colore il box di un elemento. Scopri come impostare il colore di sfondo di un'intera pagina, di un div, di una riga di tabella o di una sola parola, come funziona la trasparenza, perché bgcolor è obsoleto e in cosa background-color differisce dalla forma abbreviata background.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Come impostare un colore di sfondo

background-color riempie di colore il box di un elemento, compreso il padding e l'area sotto il bordo. Accetta qualsiasi colore CSS.

Il colore della pagina è impostato su body, la scheda e l'avviso sui rispettivi div, e l'evidenziazione su un elemento inline. Gli elementi inline ricevono lo sfondo solo dietro il testo, riga per riga.

Colore di sfondo dell'intera pagina

Metti background-color su body. Se l'elemento <html> non ha uno sfondo proprio, il browser dipinge lo sfondo del body su tutta la finestra, anche dove finisce il contenuto del body:

body {
  background-color: #111827;
  color: #f9fafb; /* change the text color too, for contrast */
}

Il vecchio modo HTML era <body bgcolor="black">. L'attributo bgcolor è obsoleto su ogni elemento, quindi usa il CSS. I browser lo rispettano ancora per le pagine vecchie, ed è per questo che può sembrare funzionare.

Sfondi trasparenti

Ogni elemento parte con background-color: transparent, quindi dietro vedi il genitore. Per colorare un box lasciandolo trasparente, usa un colore con canale alfa:

Anche opacity: 0.5 lascerebbe vedere le strisce, ma sbiadisce pure il testo. Per uno sfondo trasparente con il testo pieno, usa un colore con alfa. La pagina sui colori elenca tutti i modi per scriverne uno.

Dove viene dipinto il colore

Per impostazione predefinita lo sfondo arriva fino al bordo esterno del border (quindi si vede attraverso un bordo tratteggiato o semitrasparente). background-clip cambia questo comportamento:

Nel primo box l'ambra si vede tra i trattini. Nel secondo si ferma al bordo interno del border, e nel terzo è colorata solo l'area del contenuto. Il margin non viene mai dipinto: è sempre trasparente.

Righe di tabella a strisce

Uno sfondo su una riga sì e una no rende più facile leggere le tabelle larghe:

background-color contro la forma abbreviata background

background imposta tutte le proprietà dello sfondo in una volta. Ogni parte che ometti torna al suo valore predefinito, e questo coglie molti di sorpresa:

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background: #111827;          /* also resets background-image to none */
}

.hero {
  background-image: linear-gradient(#2563eb, #1e40af);
  background-color: #111827;    /* only the color; the gradient stays */
}

Usa background-color quando intendi solo il colore. Usa background quando imposti tutto lo sfondo in un unico punto, spesso un colore più un'immagine; vedi background-image.

Accessibilità: abbinalo al colore del testo

Un colore di sfondo è leggibile solo in relazione al colore del testo. Ogni volta che imposti l'uno, controlla l'altro: le WCAG chiedono un rapporto di contrasto di almeno 4.5:1 per il testo normale. Gli sfondi scuri richiedono un testo chiaro impostato in modo esplicito, perché il testo mantiene il colore scuro che eredita.

Errori comuni

  • Usare bgcolor. È obsoleto. Usa background-color.
  • Usare opacity per uno sfondo trasparente. Sbiadisce anche il contenuto. Usa un colore con alfa.
  • Una forma abbreviata background dopo un background-image. Azzera l'immagine. Scrivi invece background-color.
  • Aspettarsi che il margin mostri il colore. Il margin sta fuori dallo sfondo. Usa il padding per uno spazio colorato.
  • Uno sfondo scuro con il testo predefinito. Imposta anche un color chiaro.

Domande frequenti

Come cambio il colore di sfondo in HTML?

Usa la proprietà CSS background-color. Per tutta la pagina: body { background-color: #f3f4f6; }. Per un solo elemento: <div style="background-color: #fef3c7;">.

bgcolor è ancora valido in HTML?

No. L'attributo bgcolor su <body>, <table> e <td> è obsoleto in HTML5. I browser lo disegnano ancora per le pagine vecchie, ma il modo corretto è background-color in CSS.

Come rendo trasparente un colore di sfondo?

Usa un colore con canale alfa, come background-color: rgb(37 99 235 / 20%);. A differenza di opacity, così il testo all'interno resta pienamente visibile.

Che differenza c'è tra background e background-color?

background-color imposta solo il colore. background è una forma abbreviata di tutte le proprietà dello sfondo (colore, immagine, posizione, dimensione, ripetizione, attachment, origin e clip), quindi background: red; riporta a none anche un'eventuale immagine di sfondo.

Perché il colore di sfondo del body riempie tutta la finestra?

Quando l'elemento <html> non ha uno sfondo proprio, il browser dipinge lo sfondo del body su tutta la tela, anche oltre il box del body. Dai uno sfondo a html se ti servono due colori diversi.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA