Menu

Couleur de fond CSS : pages, éléments et transparence

background-color remplit la boîte d'un élément avec une couleur. Découvrez comment définir la couleur de fond d'une page entière, d'une div, d'une ligne de tableau ou d'un mot, comment fonctionne la transparence, pourquoi bgcolor est obsolète et en quoi background-color diffère du raccourci background.

Cette page contient des éditeurs exécutables - modifiez, exécutez et voyez la sortie instantanément.

Comment définir une couleur de fond

background-color remplit la boîte d'un élément, padding et zone sous la bordure compris, avec une couleur. Elle accepte n'importe quelle couleur CSS.

La couleur de la page est définie sur body, la carte et l'avertissement sur leurs div, et le surlignage sur un élément inline. Les éléments inline n'ont de fond que derrière leur texte, ligne par ligne.

Couleur de fond de toute la page

Placez background-color sur body. Si l'élément <html> n'a pas de fond propre, le navigateur peint le fond de body sur toute la fenêtre, même là où le contenu de body s'arrête :

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

L'ancienne méthode HTML était <body bgcolor="black">. L'attribut bgcolor est obsolète sur tous les éléments, utilisez donc le CSS. Les navigateurs le respectent encore pour les anciennes pages, ce qui explique pourquoi il semble fonctionner.

Fonds transparents

Chaque élément commence avec background-color: transparent, vous voyez donc le parent derrière lui. Pour teinter une boîte tout en voyant à travers, utilisez une couleur avec un canal alpha :

opacity: 0.5 laisserait aussi voir les rayures, mais il estompe aussi le texte. Pour un fond transparent avec un texte opaque, utilisez une couleur avec alpha. La page des couleurs liste toutes les façons de l'écrire.

Où la couleur est peinte

Par défaut, le fond s'étend jusqu'au bord extérieur de la bordure (il se voit donc à travers une bordure en tirets ou semi-transparente). background-clip change cela :

Dans la première boîte, l'ambre apparaît entre les tirets. Dans la deuxième, il s'arrête au bord intérieur de la bordure, et dans la troisième seule la zone de contenu est colorée. La margin n'est jamais peinte : elle est toujours transparente.

Lignes de tableau alternées

Un fond sur une ligne sur deux rend les grands tableaux plus faciles à parcourir :

background-color ou le raccourci background

background définit toutes les propriétés de fond à la fois. Chaque partie omise revient à sa valeur par défaut, ce qui surprend souvent :

.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 */
}

Utilisez background-color quand vous ne voulez que la couleur. Utilisez background quand vous définissez tout le fond au même endroit, souvent une couleur plus une image ; voir background-image.

Accessibilité : l'associer à la couleur du texte

Une couleur de fond n'est lisible qu'à côté de sa couleur de texte. Chaque fois que vous en définissez une, vérifiez l'autre : les WCAG demandent un rapport de contraste d'au moins 4,5:1 pour le texte courant. Un fond sombre demande un texte clair défini explicitement, car le texte garde la couleur sombre dont il hérite.

Erreurs courantes

  • Utiliser bgcolor. Il est obsolète. Utilisez background-color.
  • Utiliser opacity pour un fond transparent. Le contenu s'estompe aussi. Utilisez une couleur avec alpha.
  • Un raccourci background après un background-image. Il réinitialise l'image. Écrivez plutôt background-color.
  • S'attendre à ce que la margin affiche la couleur. La margin est en dehors du fond. Utilisez le padding pour un espace coloré.
  • Un fond sombre avec le texte par défaut. Définissez aussi une color claire.

Questions fréquentes

Comment changer la couleur de fond en HTML ?

Utilisez la propriété CSS background-color. Pour toute la page : body { background-color: #f3f4f6; }. Pour un élément : <div style="background-color: #fef3c7;">.

L'attribut bgcolor est-il encore valide en HTML ?

Non. L'attribut bgcolor sur <body>, <table> et <td> est obsolète en HTML5. Les navigateurs l'affichent encore pour les anciennes pages, mais la bonne méthode est background-color en CSS.

Comment rendre une couleur de fond transparente ?

Utilisez une couleur avec un canal alpha, comme background-color: rgb(37 99 235 / 20%);. Contrairement à opacity, le texte à l'intérieur reste entièrement visible.

Quelle est la différence entre background et background-color ?

background-color ne définit que la couleur. background est un raccourci pour toutes les propriétés de fond (couleur, image, position, taille, répétition, attachement, origin et clip), donc background: red; remet aussi toute image de fond à none.

Pourquoi la couleur de fond de body remplit-elle toute la fenêtre ?

Quand l'élément <html> n'a pas de fond propre, le navigateur peint le fond de body sur tout le canevas, même au-delà de la boîte de body. Donnez un fond à html si vous voulez que les deux diffèrent.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER