Maison  >  Article  >  interface Web  >  Effets d'animation de la fonction JavaScript : obtenir une expérience utilisateur fluide

Effets d'animation de la fonction JavaScript : obtenir une expérience utilisateur fluide

PHPz
PHPzoriginal
2023-11-18 11:49:11948parcourir

Effets danimation de la fonction JavaScript : obtenir une expérience utilisateur fluide

Effets d'animation de la fonction JavaScript : obtenir une expérience utilisateur fluide

Introduction :
Dans le développement Web moderne, les effets d'animation jouent un rôle important dans l'amélioration de l'expérience utilisateur et l'attraction de l'attention de l'utilisateur. Les fonctions JavaScript sont un moyen important d'obtenir des effets d'animation. Cet article explique comment utiliser les fonctions JavaScript pour obtenir des effets d'animation fluides et donne des exemples de code spécifiques.

1. Utilisez des minuteries et des modifications de propriétés CSS pour obtenir des effets d'animation
Les minuteries sont un outil courant pour obtenir des effets d'animation. Elles peuvent modifier en continu les propriétés CSS des éléments dans un intervalle de temps spécifié pour obtenir des effets d'animation. Ce qui suit est un exemple de code qui implémente un simple effet d'animation glissant vers le haut en modifiant l'attribut height de l'élément :

function slideUp(element, duration) {
  var start = performance.now();
  var elementHeight = element.offsetHeight;

  var timer = setInterval(function() {
    var timePassed = performance.now() - start;
    var progress = timePassed / duration;

    if (progress > 1) {
      progress = 1;
    }

    element.style.height = elementHeight * (1 - progress) + 'px';

    if (progress === 1) {
      clearInterval(timer);
    }
  }, 10);
}

Dans le code ci-dessus, la fonction slideUp accepte deux paramètres : l'élément à animer et la durée de l'animation. À l'intérieur de la fonction, nous utilisons la fonction setInterval pour créer une minuterie qui s'exécute toutes les 10 millisecondes. Dans la fonction de rappel du timer, nous calculons la progression de l'animation et modifions l'attribut height de l'élément en fonction de la progression. Lorsque la progression est de 1, le chronomètre est effacé et l'animation se termine. slideUp函数接受两个参数:要进行动画的元素和动画的持续时间。在函数内部,我们使用setInterval函数创建一个定时器,每10毫秒执行一次。在定时器的回调函数中,我们计算动画的进度(progress)并根据进度改变元素的高度属性。当进度为1时,清除定时器,动画结束。

二、使用requestAnimationFrame函数改进动画效果
虽然定时器可以实现简单的动画效果,但它并不是最佳的方法。使用requestAnimationFrame函数可以更好地利用浏览器的渲染机制,提供更平滑的动画效果。以下是一个使用requestAnimationFrame函数改进的示例代码:

function smoothSlideUp(element, duration) {
  var start = null;
  var elementHeight = element.offsetHeight;

  function slide(timestamp) {
    if (!start) {
      start = timestamp;
    }

    var progress = (timestamp - start) / duration;
    
    if (progress > 1) {
      progress = 1;
    }

    element.style.height = elementHeight * (1 - progress) + 'px';

    if (progress < 1) {
      requestAnimationFrame(slide);
    }
  }

  requestAnimationFrame(slide);
}

在以上代码中,我们定义了一个新的函数smoothSlideUp,该函数使用了requestAnimationFrame函数来执行动画。requestAnimationFrame函数会在浏览器下次重绘之前调用指定的回调函数,可以保证动画的流畅性。在回调函数中,我们计算动画的进度并改变元素的高度属性。如果动画进度小于1,我们会再次调用requestAnimationFrame函数,继续执行动画,直到动画结束。

结论:
通过以上示例代码,我们可以看到使用JavaScript函数来实现动画效果并不复杂。使用定时器或requestAnimationFrame

2. Utilisez la fonction requestAnimationFrame pour améliorer l'effet d'animation

Bien que la minuterie puisse obtenir des effets d'animation simples, ce n'est pas la meilleure méthode. L'utilisation de la fonction requestAnimationFrame permet de mieux utiliser le mécanisme de rendu du navigateur et de fournir des effets d'animation plus fluides. Voici un exemple de code amélioré à l'aide de la fonction requestAnimationFrame :

rrreee
    Dans le code ci-dessus, nous définissons une nouvelle fonction smoothSlideUp qui utilise requestAnimationFrame fonction pour effectuer une animation. La fonction requestAnimationFrame appellera la fonction de rappel spécifiée avant que le navigateur ne redessine la prochaine fois, ce qui peut garantir la fluidité de l'animation. Dans la fonction de rappel, nous calculons la progression de l'animation et modifions la propriété height de l'élément. Si la progression de l'animation est inférieure à 1, nous appellerons à nouveau la fonction requestAnimationFrame pour continuer l'exécution de l'animation jusqu'à la fin de l'animation.
  • Conclusion :
  • Grâce à l'exemple de code ci-dessus, nous pouvons voir qu'il n'est pas compliqué d'utiliser des fonctions JavaScript pour obtenir des effets d'animation. L'utilisation de minuteries ou de la fonction requestAnimationFrame combinée à la modification des propriétés CSS peut obtenir divers effets d'animation intéressants et améliorer l'expérience utilisateur. Dans le développement réel, choisir la méthode de mise en œuvre d'animation appropriée en fonction des besoins spécifiques peut augmenter efficacement l'attractivité de la page Web et le taux de fidélisation des utilisateurs.
Références : 🎜🎜🎜[Documentation Web MDN : Timing et animation](https://developer.mozilla.org/zh-CN/docs/Web/API/Animation_timing_API)🎜🎜[Événements de synchronisation JavaScript W3School](https : //www.w3schools.com/js/js_timing.asp)🎜🎜

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!

Déclaration:
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