La propriété background-size définit la taille des images d'arrière-plan pour l'élément. La taille de l'image peut être contrainte, complètement ou partiellement afin de conserver ses proportions.

/* Valeurs avec un mot-clé */
background-size: cover;
background-size: contain;

/* Une seule valeur                        */
/* La valeur désigne la largeur de l'image.*/
/* La hauteur vaut 'auto'.                 */
background-size: 50%;
background-size: 3em;
background-size: 12px;
background-size: auto;

/* Deux valeurs                            */
/* Première valeur : la largeur de l'image */
/* Seconde valeur : la hauteur de l'image  */
background-size: 50% auto;
background-size: 3em 25%;
background-size: auto 6px;
background-size: auto auto;

/* Valeurs pour plusieurs arrières-plans  */
/* respectives à chaque background-image. */
/* À ne pas confondre avec auto auto      */
background-size: auto, auto;
background-size: 50%, 25%, 25%;
background-size: 6px, auto, contain;

/* Valeurs globales */
background-size: inherit;
background-size: initial;
background-size: unset;

Valeur initialeauto auto
Applicabilitétous les éléments. S'applique aussi à ::first-letter et ::first-line.
Héritéenon
Pourcentagesrelatifs à la zone de positionnement du fond
Médiavisuel
Valeur calculéecomme spécifié, mais avec les longueurs relatives converties en longueurs absolues
Type d'animationrepeatable list of simple list of length, percentage, or calc
Ordre canoniquel'ordre unique et non-ambigu défini par la grammaire formelle

Syntaxe

La propriété background-size peut être définie de trois façons différentes :

  • Avec le mot-clé contain
  • Avec le mot-clé cover
  • Avec des valeurs indiquant la largeur et la hauteur de l'arrière-plan

Pour définir une taille à l'aide d'une largeur et d'une hauteur, on peut fournir une ou deux valeurs :

  • Si une seule valeur est fournie, elle sera utilisée pour la largeur, la hauteur vaudra alors auto.
  • Si deux valeurs sont fournies, la première est utilisée pour définir la largeur et la seconde pour définir la hauteur.

Chaque valeur peut être une longueur <length>, un pourcentage <percentage> ou auto.

Par exemple :

background-size: contain;

background-size: 50%;
background-size: 3em;

background-size: auto 1em;
background-size: 50% 25%;


Pour définir différentes tailles pour différentes images, on pourra fournir plusieurs tailles séparées par des virgules :

background-size: 50% 25%, contain, 3em;

Valeurs

<length>
Une valeur de type <length> qui redimensionne l'image afin que celle-ci occupe la longueur indiquée dans la dimension concernée. Les valeurs négatives ne sont pas autorisées.
<percentage>
Une valeur de type <percentage> qui redimensionne l'image d'arrière-plan proportionnellement à la taille de la zone dédiée à l'arrière-plan, définie via background-origin. Par défaut, cette zone correspond à la boîte de contenu et de remplissage (padding) mais peut être modifiée pour contenir uniquement la boîte de contenu ou, à l'inverse, les boîtes de contenu, remplissage et marge. Si la propriété background-attachment vaut fixed, la zone de positionnement de l'arrière-plan sera la fenêtre du navigateur (sans les barres de défilement). Les valeurs négatives ne sont pas autorisées.
auto
Un mot-clé qui redimensionne l'image d'arrière-plan afin que ses proportions soient conservées.
contain
Un mot-clé qui redimensionne l'image afin qu'elle soit la plus grande possible et que l'image conserve ses proportions. L'image est contrainte dans le conteneur. Les zones éventuellement vide sont remplies avec la couleur d'arrière-plan (définie grâce à background-color). Par défaut, l'image est centrée sauf si background-position a été modifiée.
cover
Un mot-clé dont le comportement est opposé à celui de contain. L'image est redimensionnée pour être aussi grande que possible et pour conserver ses proportions. L'image couvre toute la largeur ou la hauteur du conteneur et les parties qui dépassent sont rognées si les proportions du conteneur sont différentes (il n'y aucun espace libre sur lequel on verrait la couleur d'arrière-plan).

L'interprétation de ces valeurs dépend des dimensions intrinsèques de l'image (sa largeur et sa hauteur) et aussi de sa proportion. Une image matricielle possède toujours des dimensions intrinsèques et une proportion intrinsèque. Une image vectorielle peut avoir les deux dimensions intrinsèques (et donc une proportion intrinsèque) ou bien n'avoir qu'une ou zéro dimension intrinsèque (et donc éventuellement aucune proportion intrinsèque). Les gradients sont traités comme des images sans dimensions ni proportion intrinsèque.

La taille du rendu pour l'image est calculée de la façon suivante :

Si les deux composants de background-size sont définis et qu'aucun ne vaut auto :
L'image utilise la taille définie.
Si background-size vaut contain ou cover :
L'image est affichée et ses proportions sont conservées pour que l'image soit contenue dans la zone ou la recouvre complètement. Si l'image ne possède pas de proportions intrinsèques; elle est affichée avec la taille de la zone de positionnement de l'arrière-plan.
Si background-size vaut auto ou auto auto :
Si l'image possède deux dimensions intrinsèques, c'est cette taille qui est utilisée. Si elle ne possède pas de dimension intrinsèque ni de proportion intrinsèque, elle est affichée avec la taille de la zone dédiée à l'arrière-plan. Si elle n'a aucune dimensions mais possède une proportion, elle sera affichée comme si la valeur contain avait été utilisée. Si l'image possède une dimension intrinsèque et une proportion, elle est affichée avec cette dimension et cette proportion. Si l'image possède une dimension intrinsèque mais aucune proportion, elle sera affichée avec la dimension intrinsèque et l'autre dimension suivra la taille de la zone pour l'arrière-plan.
Note : Les images SVG peuvent contenir un attribut preserveAspectRatio pour lequel la valeur par défaut est équivalente à contain. Pour Firefox 43, à la différence de Chrome 52, une valeur explicite pour background-size permet d'ignorer preserveAspectRatio.
Si background-size possède une composante auto et que l'autre composante est différente de auto :
Si l'image possède une proportion intrinsèque, elle sera affichée avec la dimension indiquée et la deuxième sera calculée grâce à la proportion. Si l'image ne possède aucune proportion intrinsèque, la dimension indiquée sera utilisée pour la dimension concernée et on utilisera la dimension intrinsèque de l'image pour l'autre axe si elle existe. Sinon, on prendra la dimension de la zone de l'arrière-plan pour cet axe.

On notera que le dimensionnement des images vectorielles sans dimension intrinsèque et/ou sans proportion intrinsèque n'est pas complètement implémenté pour tous ls navigateurs. Attention donc aux différences de comportements et à bien tester parmi les différents navigateurs ciblés.

Syntaxe formelle

<bg-size>#


<bg-size> = [ <length-percentage> | auto ]{1,2} | cover | contain


<length-percentage> = <length> | <percentage>

Exemples

cover

CSS

div {
  height: 300px;
  width: 200px;
  background-color: palegreen;
  background-image: url(https://mdn.mozillademos.org/files/12988/p_201.jpg);
  background-repeat: no-repeat;
}

.exemple_cover {
  background-size: cover;
}

HTML

<div class="exemple_cover"></div>

Résultat

contain

CSS

div {
  height: 300px;
  width: 200px;
  background-color: palegreen;
  background-image: url(https://mdn.mozillademos.org/files/12988/p_201.jpg);
  background-repeat: no-repeat;
}

.exemple_cover {
  background-size: contain;
}

HTML

<div class="exemple_cover"></div>

Résultat

auto 50%

CSS

div {
  height: 300px;
  width: 200px;
  background-color: palegreen;
  background-image: url(https://mdn.mozillademos.org/files/12988/p_201.jpg);
  background-repeat: no-repeat;
}

.exemple_cover {
  background-size: auto 50%;
}

HTML

<div class="exemple_cover"></div>

Résultat

Spécifications

Spécification État Commentaires
CSS Backgrounds and Borders Module Level 3
La définition de 'background-size' dans cette spécification.
Candidat au statut de recommandation Définition initiale.

Compatibilité des navigateurs

FonctionnalitéChromeEdgeFirefoxInternet ExplorerOperaSafari
Support simple

1.0 -webkit- 1

3.01

12

3.6 -moz-

49 -webkit-

4.0

9.0

9.5 -o- 2

10

3.0 -webkit- 1

4.1

<contain> and <cover></cover></contain>3.0123.6910.04.1
SVG image as background44.0128.09.031.0 ?
FonctionnalitéAndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Support simple2.3 (Oui) (Oui)

1.0 -moz-

49 -webkit-

4.0

(Oui) (Oui) (Oui)
<contain> and <cover></cover></contain> ? ? (Oui) (Oui)10.0 ? (Oui)
SVG image as background ? ? (Oui)8.0 ? (Oui) ?

1. WebKit-based browsers originally implemented an older draft of CSS3 background-size in which an omitted second value is treated as duplicating the first value; this draft does not include the contain or cover keywords.

2. Opera 9.5's computation of the background positioning area is incorrect for fixed backgrounds. Opera 9.5 also interprets the two-value form as a horizontal scaling factor and, from appearances, a vertical clipping dimension. This has been fixed in Opera 10.

Prothèses et contournements

Pour Internet Explorer, antérieur à IE8

Bien qu'Internet Explorer 8 ne prenne pas en charge la propriété background-size, il est possible d'émuler certaines de ses fonctionnalités en utilisant la propriété -ms-filter :

-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='chemin_relatif_vers_le_fichier_HTML', sizingMethod='scale')";

Cela permet d'obtenir un comportement analogue à la valeur cover.

Pour Firefox 3.5

Bien que cette propriété ait été ajoutée avec Firefox 3.6, on peut étirer l'image entièrement sur un arrière-plan sous Firefox 3.5 en utilisant la propriété spécifique -moz-border-image.

.toto {
  background-image: url(bg-image.png);

  -webkit-background-size: 100% 100%;           /* Safari 3.0 */
     -moz-background-size: 100% 100%;           /* Gecko 1.9.2 (Firefox 3.6) */
       -o-background-size: 100% 100%;           /* Opera 9.5 */
          background-size: 100% 100%;           /* Gecko 2.0 (Firefox 4.0) et autres nav. conformes à CSS3 */
 
  -moz-border-image: url(bg-image.png) 0;    /* Gecko 1.9.1 (Firefox 3.5) */
}

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight, Prinz_Rana, fscholz, teoli, FredB, claudepache, tregagnon
 Dernière mise à jour par : SphinxKnight,