Maison > Article > interface Web > Explication détaillée des fonctions d'animation dans Vue3 : application pour obtenir des effets d'animation sympas
Avec le développement continu de la technologie Internet, de plus en plus de sites Web et d'applications doivent présenter des effets d'animation sympas pour améliorer l'expérience utilisateur. En tant que framework JavaScript moderne, Vue3 fournit aux développeurs de nombreuses excellentes boîtes à outils, notamment des fonctions d'animation. Cet article présentera en détail les méthodes d'application et de mise en œuvre des fonctions d'animation dans Vue3, ainsi que comment obtenir des effets d'animation sympas.
Vue3 fournit une puissante bibliothèque de fonctions d'animation via l'API Composition, notamment :
useTransition
: Fonction de transition useTransition
:过渡函数useAnimation
:动画函数useTween
:缓动函数useSpring
:弹簧函数这些函数可以让我们轻松地在网页中实现各种复杂的动画效果,比如状态改变时的渐变、滑动、旋转等效果。
useTransition
过渡函数useTransition
是Vue3中的一个过渡函数,用于在两个状态之间进行过渡,比如从显示到隐藏、从上滑入到下滑出等。其基本用法如下:
import { useTransition } from 'vue' const transitions = useTransition(show, { // 定义三个阶段的动画 enter: '', leave: '', appear: '' })
其中 show
是一个布尔类型的值,表示当前状态是否应该呈现。enter
、leave
和 appear
三个参数是字符串,定义了三个阶段要执行的过渡动画。
简单示例:
<template> <div class="container"> <button @click="toggle">Toggle</button> <transition appear v-for="msg in msgs" :key="msg.id" :css="false" :enter-class="'animate__animated animate__fadeInDown'" :leave-class="'animate__animated animate__fadeOutUp'" > <div class="alert" :class="'alert-' + msg.type"> {{ msg.message }} </div> </transition> </div> </template> <script> import { reactive, toRefs, ref, useTransition } from 'vue'; export default { setup() { const data = reactive({ msgs: [] }) const toggle = () => { data.msgs.unshift({ id: Math.random(), type: 'success', message: '这是一条消息' }) } const transitions = useTransition(data.msgs, { enterActiveClass: 'animate__animated animate__fadeInDown', leaveActiveClass: 'animate__animated animate__fadeOutUp' }) return { ...toRefs(data), transitions, toggle } } } </script>
当我们点击 "Toggle" 按钮,控制 show
值的改变时,就会通过过渡函数来显示或隐藏提示框区域。在这个例子中,我们使用了animate.css这个库来实现动画效果。
useAnimation
动画函数与过渡函数不同,动画函数可以自定义各种半径,例如旋转、缩放等。使用 useAnimation
可以定义各种动画效果,它接受一个函数作为参数,该函数包含以下几个参数:
initial
:动画开始时的初始状态from
to
duration
:动画持续时间delay
:动画延迟时间ease
:缓动函数一个简单示例:
import { useAnimation } from 'vue' const animations = useAnimation(() => ({ top: 0, left: 0, backgroundColor: 'red', width: '100px', height: '100px', translateY: 0, rotate: '0deg' }), { from: { top: '100px', left: '100px', backgroundColor: 'blue', width: '50px', height: '50px', translateY: '200px', rotate: '-90deg' }, to: { top: '200px', left: '200px', backgroundColor: 'black', width: '200px', height: '200px', translateY: '0px', rotate: '360deg' }, duration: 3000, delay: 1000, ease: 'ease' })
该示例定义一个动画函数,将 initial
状态从一个小蓝色正方形转换为一个大黑色正方形,同时建立更改它们的属性的动画。
值得注意的是,由于动画是在 setup
中进行设置的,我们无法通过模板来直接获取它的值。我们需要在模板中手动引入要设置的特定值。应该这样使用动画:
<template> <div :style="animations"></div> </template> <script> import { useAnimation } from 'vue'; export default { setup() { const animations = useAnimation(() => ({ top: 0, left: 0, backgroundColor: 'red', width: '100px', height: '100px', translateY: 0, rotate: '0deg' }), { from: { top: '100px', left: '100px', backgroundColor: 'blue', width: '50px', height: '50px', translateY: '200px', rotate: '-90deg' }, to: { top: '200px', left: '200px', backgroundColor: 'black', width: '200px', height: '200px', translateY: '0px', rotate: '360deg' }, duration: 3000, delay: 1000, ease: 'ease' }) return { animations } } } </script>
在模板中需要动画的属性值可以传递到 :style
中以设置最终目标。
useTween
缓动函数缓动函数不仅可以有动画效果,还可以让动画更加自然。Vue3提供了 useTween
函数,用于创建弹性、阻尼、弹簧等缓动效果。基本用法如下:
import { useTween } from 'vue' const tween = useTween(0, 100, { duration: 1000, delay: 0, ease: 'easeInQuad', onComplete: () => { console.log('Completed') } })
该示例将在指定时间内将值从0转换为100,使用 easeInQuad
缓动函数。
下面是一个简单的展示 useTween
的例子:
<template> <div> <div :style="{ transform: 'translateX(' + xValue + 'px)' }">{{ xValue }}</div> <button @click="move">Move</button> </div> </template> <script> import { ref, useTween } from 'vue'; export default { setup() { const xValue = ref(0) const move = () => { useTween(0, 300, { duration: 1000, ease: 'easeOutElastic', onUpdate: (value) => { xValue.value = value } }) } return { xValue, move } } } </script>
在这个例子中,我们用 useTween
将 xValue
从0移动到300,使用 easeOutElastic
缓动函数来创建弹簧效果。 onUpdate
回调函数将 value
(弹簧动画的最终值)分配给 xValue
,并将其绑定到模板中的一个 div。
useSpring
弹簧函数useSpring
是 Vue3 中的一个用于实现弹簧动画的函数,它可以根据给定的初始状态和目标状态创建动画,并应用弹簧效果。
import { useSpring } from 'vue' const spring = useSpring({ from: { opacity: 0, transform: 'translateX(-100px)' }, to: { opacity: 1, transform: 'translateX(0px)' }, config: { tension: 120, friction: 14, mass: 5 } })
该示例将使元素从左侧平移和半透明变为不透明。与其他动画函数一样,我们还可以使用许多其他自定义选项来控制动画效果。
<template> <div :style="spring"> <h1>这是一个标题</h1> <p>这是一段内容</p> </div> </template> <script> import { useSpring } from 'vue'; export default { setup() { const spring = useSpring({ from: { opacity: 0, transform: 'translateX(-100px)' }, to: { opacity: 1, transform: 'translateX(0px)' }, config: { tension: 120, friction: 14, mass: 5 } }) return { spring } } } </script>
在模板中,我们使用 :style
属性表示绑定到动画元素上的样式。在本例中,我们将弹簧动画的状态应用到父级 div
上,以演示如何在整个页面上设置弹簧动画。
Vue3提供了一组优秀的动画函数,能够帮助开发者快速而易于理解的实现复杂的动画效果。有了这些函数,我们可以实现各种酷炫的动画效果,进一步提高Web应用程序的用户体验。要使用这些函数,我们只需要在 setup
useAnimation
: Fonction d'animation
useTween
: Facilité Dynamique function#🎜🎜##🎜🎜#useSpring
: Fonction Spring#🎜🎜##🎜🎜#Ces fonctions nous permettent d'implémenter facilement divers effets d'animation complexes dans les pages Web, tels que le dégradé , glissement, rotation et autres effets lorsque l'état change. #🎜🎜#useTransition
La fonction de transition #🎜🎜##🎜🎜##🎜🎜#useTransition
est dans Vue3 Une fonction de transition utilisée pour effectuer la transition entre deux états, par exemple de l'affichage au masquage, en glissant de haut en bas, etc. Son utilisation de base est la suivante : #🎜🎜#rrreee#🎜🎜#where show
est une valeur booléenne indiquant si l'état actuel doit être présenté. Les trois paramètres enter
, leave
et apparaître
sont des chaînes qui définissent l'animation de transition à exécuter en trois étapes. #🎜🎜##🎜🎜#Exemple simple : #🎜🎜#rrreee#🎜🎜#Lorsque nous cliquons sur le bouton "Toggle" pour contrôler le changement de la valeur show
, elle sera affichée ou affichée via la fonction de transition Masquer la zone d'info-bulle. Dans cet exemple, nous utilisons la bibliothèque animate.css pour réaliser des effets d'animation. #🎜🎜#useAnimation
Fonction d'animation #🎜🎜##🎜🎜##🎜🎜#Contrairement à la fonction de transition, la fonction d'animation peut être personnalisée dans diverses façons Rayon, comme la rotation, la mise à l'échelle, etc. Divers effets d'animation peuvent être définis à l'aide de useAnimation
. Il accepte une fonction comme paramètre, qui contient les paramètres suivants : #🎜🎜##🎜🎜##🎜🎜#initial
. : L'état initial au démarrage de l'animation #🎜🎜##🎜🎜#from
#🎜🎜##🎜🎜#to
#🎜🎜##🎜🎜#duration
: durée de l'animation #🎜🎜##🎜🎜#delay
: temps de retard de l'animation #🎜🎜##🎜🎜#ease
: fonction d'assouplissement #🎜 🎜##🎜🎜#Un exemple simple : #🎜🎜#rrreee#🎜🎜#Cet exemple définit une fonction d'animation qui convertit l'état initial
d'un petit carré bleu en un grand noir carré tout en animant la modification de leurs propriétés. #🎜🎜##🎜🎜#Il est à noter que puisque l'animation est définie dans setup
, nous ne pouvons pas obtenir directement sa valeur via le modèle. Nous devons introduire manuellement la valeur spécifique à définir dans le modèle. L'animation doit être utilisée comme ceci : #🎜🎜#rrreee#🎜🎜#Les valeurs d'attribut qui doivent être animées dans le modèle peuvent être transmises dans :style
pour définir la cible finale. #🎜🎜#useTween
Fonction d'assouplissement#🎜🎜##🎜🎜##🎜🎜#La fonction d'assouplissement peut non seulement avoir des effets d'animation ; animation plus naturelle. Vue3 fournit la fonction useTween
pour créer des effets élastiques, d'amortissement, de ressort et autres effets d'assouplissement. L'utilisation de base est la suivante : #🎜🎜#rrreee#🎜🎜#Cet exemple convertira la valeur de 0 à 100 dans le délai spécifié, en utilisant la fonction d'assouplissement easeInQuad
. #🎜🎜##🎜🎜#Ce qui suit est un exemple simple montrant useTween
: #🎜🎜#rrreee#🎜🎜#Dans cet exemple, nous utilisons useTween
pour xValue
se déplace de 0 à 300, en utilisant la fonction d'assouplissement easeOutElastic
pour créer un effet ressort. La fonction de rappel onUpdate
attribue value
(la valeur finale de l'animation printanière) à xValue
et la lie à un div dans le modèle. #🎜🎜#useSpring
La fonction Spring #🎜🎜##🎜🎜##🎜🎜#useSpring
est dans Vue3 A fonction pour implémenter l'animation Spring, qui crée des animations basées sur un état initial et un état cible donnés, et applique des effets Spring. #🎜🎜#rrreee#🎜🎜#Cet exemple fera un panoramique de l'élément de gauche et translucide à opaque. Comme pour les autres fonctions d’animation, il existe de nombreuses autres options de personnalisation que nous pouvons utiliser pour contrôler les effets d’animation. #🎜🎜#rrreee#🎜🎜#Dans le modèle, nous utilisons l'attribut :style
pour représenter le style lié à l'élément animé. Dans cet exemple, nous appliquons l'état de l'animation du printemps au div
parent pour montrer comment animer le printemps sur toute la page. #🎜🎜#setup
puis de lier leurs valeurs d'état aux composants et modèles. De plus, les options de configuration de ces fonctions peuvent être étendues selon les besoins pour implémenter une variété de différents types d'effets d'animation. #🎜🎜#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!