Mettre à l'échelle des images en arrière-plan

La propriété CSS background-size permet d'ajuster la taille des images utilisées en arrière-plan et de remplacer le comportement par défaut qui consiste à créer un carrelage de l'image à sa pleine grandeur. Il est ainsi possible d'agrandir ou de rapetisser l'image.

Carreler une image de grande taille

Prenons une image de grande taille (par exemple l'ancien logo de Firefox en 2485x2340px). On souhaite la carreler en quatre copies de 300x300 px, comme dans l'image suivante.

On peut utiliser la feuille de style CSS suivante pour obtenir l'effet voulu :

.square {
  width: 300px;
  height: 300px;
  background-image: url(firefox_logo.png);
  border: solid 2px;
  text-shadow: white 0px 0px 2px;
  font-size: 16px;
  background-size: 150px;
}

On notera que, dans l'exemple précédent, une seule valeur avait été précisée pour background-size : 150 px. Dans ce cas, cette valeur est utilisée pour la largeur et la hauteur est alors fixée à auto.

Étirer une image

Il est aussi possible de spécifier, respectivement, la largeur et la hauteur de l'image, comme dans l'exemple suivant, où la taille de l'image est imposée à 300x150 px.

background-size: 300px 150px;

L'image suivante montre le résultat obtenu.

Agrandir une image

On peut agrandir une image en arrière-plan. À l'image suivante, une favicône de 32x32 px est agrandie à 300x300 px.

.square2 {
  width: 300px;
  height: 300px;
  background-image: url(favicon.png);
  background-size: 300px;
  border: solid 2px;
  text-shadow: white 0px 0px 2px;
  font-size: 16px;
}

On remarque que la feuille de style utilisée est identique à la précédente, sauf en ce qui concerne le nom de l'image.

Valeurs spéciales : contain et cover

En plus de <length>, la propriété CSS background-size permet d'employer deux autres valeurs : contain et cover

contain

La valeur contain spécifie les dimensions de l'image d'arrière-plan de manière à ce que sa largeur et sa hauteur soient aussi grandes que possible, tout en conservant l'image à l'intérieur de son élément conteneur. Ainsi, l'image ne peut déborder de son élément conteneur.

Essayez de redimensionner la fenêtre de votre navigateur afin de voir la valeur contain en action (Votre navigateur doit supporter la mise à l'échelle d'images d'arrière-plan).

<div class="bgSizeContain">
  <p>Redimensionnez la fenêtre de votre navigateur.</p>
</div>
.bgSizeContain {
  height: 200px;
  background-image: url('https://mdn.mozillademos.org/files/8971/firefox_logo.png');
  background-size: contain;
  border: 2px solid darkgray;
  color: #000; text-shadow: 1px 1px 0 #fff;
}

cover

La valeur cover assure que l'image d'arrière-plan soit aussi petite que possible, tout en maintenant ses dimensions plus grandes ou égales à la taille de l'élément conteneur. L'échelle entre la largeur et la hauteur est maintenue.

On notera, qu'à ce jour, IOS Safari présente un comportement défectueux lorsque la valeur cover est utilisée.

Cet exemple utilise le document HTML et la feuille de style suivants :

<div class="bgSizeCover">
  <p>Redimensionnez la fenêtre de votre navigateur.</p>
</div>
.bgSizeCover {
  height: 200px;
  background-image: url('https://mdn.mozillademos.org/files/8971/firefox_logo.png');
  background-size: cover;
  border: 2px solid darkgray;
  color: #000; text-shadow: 1px 1px 0 #fff;

Voir aussi

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight, mrstork, Gibus, amdufour
 Dernière mise à jour par : SphinxKnight,