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. Usabackground-color. - Usare
opacityper uno sfondo trasparente. Sbiadisce anche il contenuto. Usa un colore con alfa. - Una forma abbreviata
backgrounddopo unbackground-image. Azzera l'immagine. Scrivi invecebackground-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
colorchiaro.
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.