Maison > interface Web > js tutoriel > Pourquoi ma transition CSS ne fonctionne-t-elle pas avec les styles en ligne et comment puis-je y remédier ?

Pourquoi ma transition CSS ne fonctionne-t-elle pas avec les styles en ligne et comment puis-je y remédier ?

Linda Hamilton
Libérer: 2024-10-29 01:28:02
original
822 Les gens l'ont consulté

 Why Doesn't My CSS Transition Work With Inline Styles and How Do I Fix It?

La transition CSS ne démarre pas ou le rappel n'est pas appelé

Problème :

Dans un projet de jeu basé sur JavaScript, les tentatives visant à remplacer les animations jQuery par des transitions CSS pour les mouvements de projectiles se sont révélées infructueuses. Les transitions ont été ignorées ou n'ont pas déclenché le rappel, même avec l'application d'un délai setTimeout.

Explication :

Ce comportement se produit car le navigateur n'a pas appliqué styles CSS en ligne avant d'appliquer les propriétés de transition. Lorsque le nouveau style est défini, le style calculé de l'élément a toujours des valeurs par défaut pour les positions d'affichage, de gauche et du haut.

Étant donné que les valeurs de gauche et du haut restent à 0px (leurs valeurs par défaut), la transition n'a rien à voir car les valeurs correspondent à celles définies dans le nouveau style. Pour remédier à cela, une redistribution du navigateur doit être forcée pour mettre à jour les styles avant d'appliquer la transition.

Solution :

Pour forcer une redistribution du navigateur, utilisez Element.offsetHeight getter. Par exemple :

<code class="js">// Assume animdiv is the element you want the transition to work on
animdiv.offsetTop;
// Now animdiv has all inline styles set

Object.assign(animdiv.style, {
  left: "100px",
  top: "100px"
});</code>
Copier après la connexion

Cette étape garantit que le style calculé de l'élément est à jour et que la transition sera appliquée comme prévu.

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