Maison  >  Article  >  interface Web  >  Comment définir l'animation lors du changement de composants dans Uniapp

Comment définir l'animation lors du changement de composants dans Uniapp

PHPz
PHPzoriginal
2023-04-18 14:10:322317parcourir

Avec le développement fulgurant de l'Internet mobile, de plus en plus d'applications commencent à donner la priorité à l'expérience utilisateur. Dans la conception et le développement, l'animation, en tant que méthode interactive, devient de plus en plus importante.

Uniapp est actuellement l'un des frameworks de développement multiplateforme les plus populaires. Il prend en charge le développement simultané de plusieurs plates-formes (telles que les mini-programmes WeChat, H5, App, etc.), réduisant ainsi les coûts et le temps de développement. Dans Uniapp, il est relativement simple d'implémenter une animation de changement de composant. Discutons-en ensemble.

1. Utiliser le composant de transition

Lors du changement de composant, nous pouvons utiliser le composant de transition dans Vue pour implémenter l'animation. Le composant de transition implémente l'effet d'animation de transition en implémentant les quatre noms de classe CSS suivants :

  • .v-enter : prend effet lorsque l'élément est inséré.
  • .v-enter:元素被插入时生效。
  • .v-enter-active:定义过渡的状态。在元素被插入时生效,在过渡过程完成前后移除。
  • .v-enter-to:2.1.8版本以上新增。元素被插入时生效,在过渡过程完成后生效。
  • .v-leave:元素被移除时生效。
  • .v-leave-active:定义过渡的状态。在元素被移除时生效,在过渡过程完成前后移除。
  • .v-leave-to:2.1.8版本以上新增。元素被移除时生效,在过渡过程完成后生效。

下面我们通过一个例子来演示如何使用transition组件:

<template>
  <div class="container">
    <transition name="fade">
      <div v-if="show">我是一段文字</div>
    </transition>
  </div>
</template>

<style>
.fade-enter-active,
.fade-leave-active {
  transition: opacity 0.5s;
}

.fade-enter,
.fade-leave-to {
  opacity: 0;
}
</style>

<script>
export default {
  data() {
    return {
      show: true
    }
  },
  methods: {
    toggleShow() {
      this.show = !this.show;
    }
  }
}
</script>

在这个例子中,我们使用了Vue中的v-if指令来实现元素的显示和隐藏。如果show为true,那么<div v-if="show">我是一段文字</div>将会被渲染出来,否则将不会显示。在这个元素上,我们使用了Vue的transition组件,设置了name属性为"fade",并定义了两个类名fade-enter-active和fade-leave-active,用来指定过渡效果的时间和属性。在fade-enter和fade-leave-to类名中,我们指定了元素的opacity属性,使得元素在显示和隐藏时有淡入淡出的效果。

2. 在App.vue文件中定义全局过渡效果

如果我们需要在整个应用中都使用同一个过渡效果,我们可以在App.vue文件中定义全局的transition组件。下面是一个实现页面切换的过渡效果的例子:

<template>
  <div class="container">
    <transition name="page">
      <router-view></router-view>
    </transition>
  </div>
</template>

<style>
.page-enter-active,
.page-leave-active {
  transition: all 0.5s;
}

.page-enter,
.page-leave-to {
  opacity: 0;
  transform: translateX(100%);
}
</style>

在这个例子中,我们使用了Vue中的路由组件router-view来实现页面的切换。在这个组件外面,我们又使用了一个transition组件,并将name属性设置为"page"。在这个transition组件上,我们同样定义了两个类名page-enter-active和page-leave-active,用来指定过渡效果的时间和属性。在page-enter和page-leave-to类名中,我们指定了元素的opacity和transform属性,使得页面在进入和离开时有平移和淡化的效果。

3. 在组件中使用Animation标签

除了transition组件外,Uniapp还为我们提供了一种更加简单的方式来实现组件切换的动画,那就是使用Animation标签。Animation标签被设计成专门用来完成动画的,通过设置标签的属性,我们可以定义动画效果的开始、结束、持续时间和缓动函数等。

下面是一个使用Animation标签实现组件切换动画的例子:

<template>
  <div class="container">
    <animation :name="aniName" :duration="aniDuration">
      <div v-if="show" class="box"></div>
    </animation>
    <button @click="toggleShow()">toggleShow</button>
  </div>
</template>

<style>
.box {
  width: 100px;
  height: 100px;
  background-color: red;
}

.move-enter-active {
  animation: move-enter 1s ease-out;
}

.move-leave-active {
  animation: move-leave 1s ease-in;
}

@keyframes move-enter {
  0% {
    opacity: 0;
    transform: translateX(100%);
  }
  100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes move-leave {
  0% {
    opacity: 1;
    transform: translateX(0);
  }
  100% {
    opacity: 0;
    transform: translateX(-100%);
  }
}
</style>

<script>
export default {
  data() {
    return {
      show: true,
      aniName: "",
      aniDuration: 0
    }
  },
  methods: {
    toggleShow() {
      this.show = !this.show;
      this.aniName = this.show ? "move-enter" : "move-leave";
      this.aniDuration = 1000;
    }
  }
}
</script>

在这个例子中,我们使用了两个关键字<animation><div class="box"></div>.v-enter-active : Définir l'état de transition. Prend effet lorsque l’élément est inséré et supprimé avant et après la fin du processus de transition.

.v-enter-to : nouvellement ajouté dans la version 2.1.8 et supérieure. Il prend effet lorsque l'élément est inséré et prend effet une fois le processus de transition terminé.

.v-leave : prend effet lorsque l'élément est supprimé.

.v-leave-active : Définir l'état de transition. Prend effet lorsque l’élément est supprimé, avant et après la fin du processus de transition.

.v-leave-to : nouvellement ajouté dans la version 2.1.8 et supérieure. Prend effet lorsque l’élément est supprimé et prend effet une fois le processus de transition terminé.

Ci-dessous, nous utilisons un exemple pour montrer comment utiliser le composant de transition : 🎜rrreee🎜 Dans cet exemple, nous utilisons l'instruction v-if dans Vue pour afficher et masquer des éléments. Si show est vrai, alors <div v-if="show">Je suis un morceau de texte</div> sera rendu, sinon il ne sera pas affiché. Sur cet élément, nous avons utilisé le composant de transition de Vue, défini l'attribut name sur "fade" et défini deux noms de classe fade-enter-active et fade-leave-active pour spécifier l'heure et les attributs de l'effet de transition. Dans les noms de classe fade-enter et fade-leave-to, nous spécifions l'attribut d'opacité de l'élément afin que l'élément ait un effet de fondu entrant et sortant lorsqu'il est affiché et masqué. 🎜🎜2. Définissez l'effet de transition global dans le fichier App.vue 🎜🎜Si nous devons utiliser le même effet de transition dans toute l'application, nous pouvons définir le composant de transition global dans le fichier App.vue. Voici un exemple d'implémentation d'un effet de transition pour le changement de page : 🎜rrreee🎜Dans cet exemple, nous utilisons le composant de routage router-view dans Vue pour implémenter le changement de page. En dehors de ce composant, nous utilisons un composant de transition et définissons l'attribut name sur "page". Sur ce composant de transition, nous définissons également deux noms de classe page-enter-active et page-leave-active, qui sont utilisés pour spécifier l'heure et les attributs de l'effet de transition. Dans les noms des classes page-enter et page-leave-to, nous spécifions les attributs d'opacité et de transformation des éléments, afin que la page ait un effet de traduction et de fondu lors de l'entrée et de la sortie. 🎜🎜3. Utiliser les balises d'animation dans les composants🎜🎜En plus du composant de transition, Uniapp nous fournit également un moyen plus simple d'animer le changement de composant, qui consiste à utiliser la balise Animation. La balise Animation est conçue spécifiquement pour compléter l'animation. En définissant les propriétés de la balise, nous pouvons définir le début, la fin, la durée et la fonction d'accélération de l'effet d'animation. 🎜🎜Ce qui suit est un exemple d'utilisation de la balise Animation pour implémenter une animation de changement de composant : 🎜rrreee🎜Dans cet exemple, nous utilisons les deux mots-clés <animation> et <div class= "boîte"></div>. Parmi eux, le nom et la durée de l'animation sont définis dans la balise Animation. Ces informations seront modifiées au clic sur le bouton. Sur l'élément box, nous utilisons l'instruction v-if dans Vue pour afficher et masquer l'élément. En dehors de l'élément box, nous définissons deux noms de classe move-enter-active et move-leave-active pour spécifier quel effet d'animation utiliser, et définissons deux images clés move-enter et move-leave, stipulant les états de début et de fin du effet d'animation. 🎜🎜Résumé🎜🎜Les trois méthodes ci-dessus pour implémenter l'animation de changement de composants ont chacune leurs propres avantages et inconvénients. Nous pouvons choisir la méthode appropriée en fonction des besoins du projet. Si vous souhaitez en savoir plus sur le développement multiplateforme, n'hésitez pas à suivre les cours Uniapp pour acquérir davantage de compétences et de méthodes de développement ! 🎜

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