Comment créer un arrière-plan (backgroud) CSS extensible et adaptable ?

Depuis la version 3 du langage CSS, une nouvelle propriété adapte une image de fond à la taille indiquée en paramètre.

Le langage CSS gère les images de fond des éléments. Depuis la version 3 du langage, une nouvelle propriété, background-size, adapte une image de fond à la taille indiquée en paramètre (à consulter aussi l'astuce : Comment rendre l'arrière-plan d'un élément semi-transparent en conservant le texte de cet élément opaque en CSS ?). S'il s'agit d'un pourcentage, l'image sera étirée pour remplir le conteneur.

#monConteneur {
background-size: 100% auto; # La largeur et la hauteur sont fixées à la taille du conteneur
}

Cette propriété n'est disponible que sur les navigateurs récents. Si l'affichage doit être compatible avec des navigateurs plus anciens, il faut alors combiner plusieurs propriétés CSS et utiliser une balise <div> avec une image.

<div id=fond>
<img src=img.jpg class=stretch/>
</div>

Pour que l'image soit bien étirée, il faut que la division le soit. Pour cela on la place en haut à gauche avec les propriétés left et top, combinées à la propriété position définie à absolute. On agrandit la division au maximum puis on la place en fond grâce à la propriété z-index qui définit le niveau de profondeur d'un élément. Il ne reste plus qu'à étirer l'image en lui donnant la hauteur et la largeur maximum.

#fond {
width: 100%;
height: 100%;
position: absolute;
left: 0px;
top: 0px;
z-index: 0;
}
.stretch {
width:100%;
height:100%;
}

Si l'image doit être mise à l'échelle plutôt qu'étirée, il faudra remplacer les propriétés CSS de l'image par les propriétés suivantes :

.stretch {
min-width:100%;
min-height:100%;
width:auto;
height:auto;
}

Si vous préférez faire appel à du JavaScript, des plugins comme modernizr ou imgsizer possèdent ces fonctionnalités.

HTML/CSS