Accueil

Traduction

Tutoriel CSS - sommaire

Sommaire partiellement masqué - faites défiler !

Tutoriel CSS - recherche

L'auteur : Patrick Darcheville

Vous pouvez me contacter via Facebook pour questions & suggestions : Page Facebook relative à mon site

CSS : le raccourci "background" enrichi dans la version 3

Lorsque vous voulez insérer une image dans une page web, vous pensez forcément à la balise IMG. Mais dois-je rappeler qu'il y a une autre solution : créer une boite et lui attribuer la propriété background-image.
Ainsi vous pouvez superposer dans une boite : une couleur de fond, une image (ou plusieurs) et du texte.
De plus il vous sera possible d'animer cette boite simplement via le CSS (sans recourir au JavaScript).

Méga propriété background : révisions

Exemple


La version 3 de CSS est très riche en nouveautés.
Blabla ...
Blabla ...
Blabla ...
Blabla ...

Le code correspondant

Si vous voulez superposer du texte sur une image il faut créer une boite contenant l'image via le raccourci background
Cette image doit être relativement transparente afin que le texte reste lisible.
Par défaut, si l'image est plus petite que la boite (comme dans l'exemple) elle est répétée sur les deux axes.

Images de fond multiples

Désormais il est possible d'avoir en arrière plan d'une boite plusieurs images !
On peut utiliser le raccourci background ou les différentes propriétés préfixées "background" : background-image, background-color, background-repeat, background-position.

Utilisation de la méga propriété background

Une boite contenant 5 images positionnées. Les images sont insérées avec leur taille native.

Le code correspondant

Pour la boite identifiée nus le raccourci background comprend cinq séries de valeurs séparées par une virgule car il y a insertion de cinq images dans cette boite.
Pour chaque image on précise son chemin relatif, le terme no-repeat (pour que l'insertion soit unique), le positionnement de l'image sur les deux axes (axe X, axe Y).
On peut combiner des images et une couleur de fond. Ici un fond de couleur "purple".

Le rendu sur un petit écran est moche car les images n'ont pas été redimensionnée.

Redimensionner les images insérées

Ci-dessous une boite avec trois images insérées et redimensionnées.

Trois images insérées dans une boite à fond rose

Le code correspondant

Dans le cadre du CSS j'utilise une autre syntaxe. Au lieu du raccourci background j'utilise les différentes propriétés préfixées "background-" : background-image, background-position, background-repeat, background-size, background-color.

Pour chaque propriété préfixée "background-" on a trois valeurs (ou couple de valeurs) séparées par des virgules.
Pourquoi trois ? Parce qu'il y a trois images insérées dans la boite !
Remarquez les différentes façons d'exprimer le positionnement de chaque image : en pixels, avec des mots clés voire en pourcentages.
Notez les différentes façons d'exprimer la largeur de chaque image : en pixels ou en pourcentage.

Adapter l'image de fond unique à son conteneur

Dans la section précédente vous avez découvert la nouvelle composante de background : background-size.
La valeur de cette propriété peut être aussi "cover" ou "contain". Dans ce cas l'image unique n'est pas répétée et s'adapte aux dimensions la boite parente. Que ce soit "cover" ou "contain" l'image de fond n'est pas déformée (respect des proportions).

Problématique

Nous avons une image qui fait 700 pixels par 437.
Et nous voulons que cette image devienne l'arrière plan d'une boite qui fait 80% de large (par rapport à BODY) par 500px. Que faire ???
Ci-dessous l'image à insérer :

Avant la solution était de redimensionner l'image aux dimensions de la boite avec un logiciel tel paint.
Avec CSS 3 il suffit d'utiliser la nouvelle propriété CSS background-size : cover /contain & background-repeat : no-repeat

Nous voulons aussi dans cette boite, insérer mais cette fois en premier plan, deux gifs animés susceptibles d'être déplacés via une animation CSS.
Il faut donc que ces images soient des éléments de la page. Il faut alors utiliser la balise IMG à l'intérieur du DIV conjointement avec les propriétés position : absolute; top & left : positionnement en absolu des images dans le DIV.

Solution avec background-size : cover

Remarquez que l'image de fond est rognée à droite (le grand sapin n'apparait plus).

Le code correspondant

La balise DIV contient deux éléments IMG.

Les gifs animés sont redimensionnés et positionnés par rapport à l'angle haut gauche du DIV car celle-ci est elle-même positionnée en absolu (ou relatif ou fixe)

Solution avec background-size : contain

Le code est strictement le même sauf que background-size vaut "contain".

L'image de fond n'est pas rognée mais on observe une grande bande blanche en bas de la boite.
En effet les proportions de l'image insérée étant différentes de celles du DIV, celle-ci n'occupe pas tout le conteneur.
Donc ici la première solution est préférable.