Maison  >  Article  >  interface Web  >  Explication détaillée des fonctions d'animation dans Vue3 : application pour obtenir des effets d'animation sympas

Explication détaillée des fonctions d'animation dans Vue3 : application pour obtenir des effets d'animation sympas

WBOY
WBOYoriginal
2023-06-18 23:34:131955parcourir

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.

  1. Introduction

Vue3 fournit une puissante bibliothèque de fonctions d'animation via l'API Composition, notamment :

    #🎜 🎜 #useTransition : Fonction de transition
  • useTransition:过渡函数
  • useAnimation:动画函数
  • useTween:缓动函数
  • useSpring:弹簧函数

这些函数可以让我们轻松地在网页中实现各种复杂的动画效果,比如状态改变时的渐变、滑动、旋转等效果。

  1. useTransition 过渡函数

useTransition是Vue3中的一个过渡函数,用于在两个状态之间进行过渡,比如从显示到隐藏、从上滑入到下滑出等。其基本用法如下:

import { useTransition } from 'vue'

const transitions = useTransition(show, {
  // 定义三个阶段的动画
  enter: '',
  leave: '',
  appear: ''
})

其中 show 是一个布尔类型的值,表示当前状态是否应该呈现。enterleaveappear 三个参数是字符串,定义了三个阶段要执行的过渡动画。

简单示例:

<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这个库来实现动画效果。

  1. 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 中以设置最终目标。

  1. 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>

在这个例子中,我们用 useTweenxValue 从0移动到300,使用 easeOutElastic 缓动函数来创建弹簧效果。 onUpdate 回调函数将 value(弹簧动画的最终值)分配给 xValue,并将其绑定到模板中的一个 div。

  1. 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 上,以演示如何在整个页面上设置弹簧动画。

  1. 总结

Vue3提供了一组优秀的动画函数,能够帮助开发者快速而易于理解的实现复杂的动画效果。有了这些函数,我们可以实现各种酷炫的动画效果,进一步提高Web应用程序的用户体验。要使用这些函数,我们只需要在 setupuseAnimation : 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. #🎜🎜#
            #🎜🎜#Summary#🎜🎜##🎜🎜##🎜🎜#Vue3 fournit un ensemble d'excellentes fonctions d'animation qui peuvent aider les développeurs à comprendre rapidement et facilement l'effet d'animation d'implémentations complexes. Avec ces fonctions, nous pouvons implémenter divers effets d'animation sympas pour améliorer encore l'expérience utilisateur des applications Web. Pour utiliser ces fonctions, il suffit de les appeler dans la fonction 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!

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