Maison > interface Web > js tutoriel > Comment redémarrer les animations CSS3 sans supprimer d'éléments ?

Comment redémarrer les animations CSS3 sans supprimer d'éléments ?

Barbara Streisand
Libérer: 2024-11-10 18:16:02
original
760 Les gens l'ont consulté

How to Restart CSS3 Animations Without Removing Elements?

Redémarrage des animations CSS3 : une meilleure approche que la suppression d'éléments

Lorsque vous travaillez avec des animations CSS3, la nécessité de redémarrer une animation lors de l'interaction de l'utilisateur peut surgir. Un scénario courant est une barre de progression qui affiche le temps restant et nécessite une réinitialisation une fois l'opération terminée. Bien que la suppression et la réinsertion de l'élément animé puissent redémarrer l'animation, cela implique une manipulation inutile du DOM.

Méthode alternative utilisant Reflow

Une approche plus efficace consiste à déclencher un navigateur redistribuer pour appliquer les modifications d’animation. Ceci peut être réalisé avec la fonction JavaScript suivante :

function reset_animation() {
  var el = document.getElementById('animated');
  el.style.animation = 'none';
  el.offsetHeight; /* trigger reflow */
  el.style.animation = null;
}
Copier après la connexion

Dans cet exemple, nous sélectionnons l'élément animé (#animated) et définissons temporairement son animation sur aucune. Cela met l'animation en pause sans réinitialiser sa progression. Ensuite, nous utilisons offsetHeight pour forcer une redistribution, ce qui garantit que tous les styles CSS sont appliqués. Enfin, nous redéfinissons la propriété d'animation à sa valeur d'origine, déclenchant le redémarrage de l'animation à partir de son état initial.

Exemple d'implémentation

Dans l'extrait HTML et CSS suivant , nous avons une barre de progression qui rebondit sur l'écran :

<div>
Copier après la connexion
#animated {
  position: absolute;
  top: 70px;
  width: 50px; height: 50px;
  background-color: black;
  animation: bounce 3s ease-in-out infinite;
}
@keyframes bounce {
  0% { left: 0; }
  50% { left: calc( 100% - 50px ); }
  100% { left: 0; }
}
Copier après la connexion

Cliquer sur le bouton "Réinitialiser" appelle le fonction reset_animation(), redémarrant l'animation sans délai notable ni surcharge de manipulation DOM.

Conclusion

L'utilisation de la redistribution du navigateur pour appliquer les modifications de l'animation offre une solution plus efficace et plus élégante. pour redémarrer les animations CSS3. Il élimine le besoin de supprimer et de réinsérer des éléments, ce qui se traduit par une expérience utilisateur plus fluide et plus performante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal