Menu

Image de fond CSS : taille, position, répétition et cover

background-image place une image ou un dégradé derrière le contenu d'un élément. Découvrez url() et les dégradés, background-size (cover et contain), background-position, background-repeat, la superposition de plusieurs fonds et le raccourci background.

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

Comment ajouter une image de fond

background-image peint une image derrière le contenu, le padding et la bordure de l'élément. Par défaut, elle commence au coin supérieur gauche de la boîte de padding, garde sa taille naturelle et se répète pour remplir la boîte :

Dans un vrai projet, url() pointe vers un fichier : url("images/hero.jpg"). Le chemin est relatif à la feuille de style qui le contient (ou à la page, pour un élément <style>). Les exemples de cette page utilisent de petites images SVG écrites en ligne sous forme d'URL data:, pour fonctionner partout.

Deux choses à savoir dès le départ :

  • Un fond ne donne pas de taille à un élément. Une div vide avec une image de fond fait 0px de haut. Donnez-lui du contenu, du padding, une height ou un aspect-ratio.
  • Une image de fond est une décoration. Les lecteurs d'écran l'ignorent et elle n'a pas de texte alternatif. Une image porteuse de sens a sa place dans un élément <img>.

background-size : cover, contain et longueurs

background-size redimensionne l'image. Les deux mots-clés gardent ses proportions :

L'image est deux fois plus large que haute et chaque boîte est carrée.

ValeurRésultat
auto (par défaut)La taille propre de l'image
coverS'agrandit jusqu'à remplir entièrement la boîte ; l'excédent est rogné
containS'agrandit jusqu'à ce que l'image entière tienne ; des bandes grises restent sur deux côtés
200px200px de large, hauteur proportionnelle
50% autoLa moitié de la largeur de la boîte, hauteur proportionnelle
100% 100%Exactement la taille de la boîte ; déforme l'image si les proportions diffèrent

cover est le choix habituel pour les bannières et les cartes. contain convient aux logos et illustrations qui ne doivent jamais être coupés.

background-position et background-repeat

background-position place l'image dans la boîte, avec des mots-clés (top, center, bottom, left, right), des pourcentages ou des longueurs. background-repeat contrôle la répétition. Essayez quelques valeurs :

Essayez les positions top right, bottom 10px right 20px et 25% 75%, et les répétitions repeat-x, repeat-y, space (des tuiles espacées pour qu'aucune ne soit coupée) et round (des tuiles redimensionnées pour qu'un nombre entier tienne).

Superposition : plusieurs fonds et un texte par-dessus

background-image accepte une liste séparée par des virgules. La première couche est dessinée au-dessus. L'usage courant est un dégradé semi-transparent sur une photo, pour qu'un texte blanc reste lisible :

aspect-ratio donne une hauteur à la boîte vide, et background-size: cover s'applique aux deux couches. Pour d'autres recettes de dégradés, voir les dégradés CSS.

Le raccourci background

background définit toutes les propriétés de fond en une ligne. La taille doit venir juste après la position, séparée par une barre oblique, et la couleur se place dans la dernière couche :

.hero {
  background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
  background-image: url("hero.jpg");
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  background-color: #1f2937;
}

La couleur de secours s'affiche pendant le chargement de l'image, et si celui-ci échoue. Toute propriété omise dans le raccourci revient à sa valeur par défaut : placez donc le raccourci en premier et les propriétés individuelles après.

Autres propriétés de fond

PropriétéRôle
background-attachment: fixedL'image reste en place pendant le défilement de la page (ignoré sur Safari iOS)
background-originSi la position part du bord de la bordure, du padding ou du contenu
background-clipOù le fond est peint, y compris text pour remplir les lettres
background-blend-modeFusionne les couches entre elles, comme multiply

Erreurs courantes

  • Un mauvais chemin. url() dans une feuille de style est relatif au fichier CSS, pas à la page HTML.
  • Un élément vide. Il n'a pas de hauteur, et l'image n'a nulle part où s'afficher.
  • Oublier no-repeat avec contain ou une petite image : elle se répète.
  • Étirer avec 100% 100% alors que vous vouliez cover.
  • Des images importantes en fond. Utilisez <img> avec un texte alternatif pour le contenu ; les fonds sont invisibles pour les lecteurs d'écran.
  • Oublier les guillemets autour d'une URL data: qui contient des espaces ou des guillemets. Écrivez toujours url("...").

Questions fréquentes

Comment ajouter une image de fond en CSS ?

Utilisez background-image: url("photo.jpg"); sur l'élément. Le chemin est relatif au fichier CSS (ou à la page, pour un attribut style ou un élément <style>). Donnez une taille à l'élément, car un fond ne fait jamais grandir un élément vide.

Comment faire couvrir tout l'élément par une image de fond ?

Utilisez background-size: cover; avec background-position: center;. L'image s'agrandit pour remplir entièrement la boîte en gardant ses proportions, et ce qui dépasse est rogné.

Quelle est la différence entre cover et contain ?

cover remplit toute la boîte et rogne ce qui ne tient pas. contain montre l'image entière et laisse un espace vide sur deux côtés quand les proportions diffèrent.

Comment empêcher une image de fond de se répéter ?

Ajoutez background-repeat: no-repeat;. Par défaut, une image de fond se répète en mosaïque dans les deux directions pour remplir l'élément.

Pourquoi mon image de fond ne s'affiche-t-elle pas ?

Les causes habituelles sont un mauvais chemin dans url() (il est relatif au fichier CSS), un élément sans hauteur parce qu'il n'a pas de contenu, ou un raccourci background placé plus loin qui a réinitialisé l'image.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER