Trucs et Astuces CSS
Chapitre 6 : Arrière-plans

Retour Accueil CSS

50 Arrière-plans multiples animés

Termes CSS clés employés : :background-position, animation.
Compatibilité navigateurs : IE10+, Firefox16+, Chrome et Safari
avec préfixe, Opera12.1+.

Problématique

Combiner plusieurs arrière-plans et les animer de façon différentielle.

Résolution théorique

CSS autorise la définition de plusieurs images d’arrière-plan pour un même élément. Une animation va modifier graduellement la position relative de chaque image d’arrière-plan. Les deux images d’avant-plan sont au format .png, de façon à posséder un arrière-plan transparent. Vous pourriez aussi employer des images de type clip-art au format gif, également dotée de transparence d’arrière-plan.

Résolution pratique

La première étape consiste à définir les images retenues et à les retravailler si nécessaires afin de les mettre dans le bon format : un sujet qui dépasse le thème de ce tutoriel. Pour obtenir un effet agréable, vos images ne doivent pas présenter de discontinuités sur les bords, de façon à pouvoir se répéter de façon non évidente (la répétition est le comportement par défaut d’une image d’arrière- plan).
Le code HTML est primaire :
<div class="conteneur"></div>
Le code CSS est à peine plus complexe : vous définissez la taille du div conteneur, en définissant trois images d’arrière-plan, dont vous fixez la position.
div.conteneur { width:352px; height:140px; margin:20px auto 20px; background-image: url(ciel2.png), url(ciel3.png), url(cielfond.png); background-position: 0px 0px, 0px 0px, top left; }
Vous définissez ensuite une animation en cas de survol de l’élément par le pointeur. Elle est ici assez lente, de type linéaire et se répète à l’infini.
div.conteneur:hover {animation: fondanim 15s linear infinite}
Et vous définissez l’animation elle-même, qui joue sur la position des images d’arrière-plan. La dernière image reste fixe (top left), la première se déplace de 351 pixels et la seconde de 702 pixels : elle semblera donc se déplacer deux fois plus vite. Le décalage est supérieur à la largeur des images, mais la propriété background-repeat étant par défaut fixée à repeat cela est sans importance : elles défileront en se répétant.
@keyframes fondanim{ from { background-position: 0px 0px, 0px 0px, top left; } to { background-position: 351px 0px, 702px 0px, top left;} }


Retour Accueil CSS

© 1999-2014 Fabrice "Fyndhorn Elder" Lemainque