[CSS-JS]Animation CSS simple
Structure HTML de base
<div class="cadre">
<img src="//club.developpez.com/webdesign/Rubriques/Web/CSS/logo_outils_css.gif" alt="">
</div>
Animation au survol
L'animation consiste à faire apparaître l'image au survol de l'élément conteneur puis à faire disparaître celle-ci lorsque l'on quitte la zone.
L'animation est géré par le CSS grâce à l'utilisation du sélecteur #cadre:hover img
et l'utilisation de la propriété transition
affectée à l'image.
.cadre img {
position: absolute;
right: -100%;
transition: all .5s;
}
.cadre:hover img {
right: 0;
}
Animation sur action
L'animation consiste à faire apparaître l'image sur une action, ici appui sur un élément <button>
, puis à la faire disparaître sur une autre action, ici un nouvel appui sur le même élément <button>
.
L'animation est déclenchée en ajoutant/supprimant une classe à l'image, ceci est géré en JavaScript en utilisant la méthode element.classList.toggle()
.
// ajout/suppression de la class au click
oBtn.addEventListener('click', function (e) {
oImg.classList.toggle('visible');
});
L'animation proprement dite est gérée par le CSS.
.cadre img.visible {
right: 0;
}
Animation va et vient sur action
L'animation consiste à faire apparaître puis disparaître l'image sur une action, ici appui sur un élément <button>
.
L'animation est déclenchée en ajoutant une classe à l'image, ceci est géré en JavaScript en utilisant la méthode element.classList.add()
puis en la supprimant en fin d'animation.
// ajout de la class au click
oBtn.addEventListener('click', function (e) {
oImg.classList.add('show-hide');
});
La suppression en fin d'animation se fait en plaçant un écouteur animationend
sur l'image, et en utilisant la méthode element.classList.remove()
.
// supprime la class en fin d'animation
oImg.addEventListener('animationend', function(e){
this.classList.remove('show-hide');
});
L'animation proprement dite est gérée par le CSS en utilisant la propriété animation
et une règle @keyframes
.
.cadre img.show-hide {
animation: show-hide 1s linear;
}
@keyframes show-hide {
0% {
right: -100%;
}
40% {
right: 0;
}
60% {
right: 0;
}
100% {
right: -100%;
}
}