vue中使用过渡动画和第三方库[animate.style]

本文详细介绍了在Vue中如何使用transition和animation创建过渡效果,包括进入和离开状态的类名解释,以及如何自定义过渡类名。同时,讲解了如何结合第三方库animate.style来增强动画效果,强调了在实际应用中为transition定义name属性的重要性,并提供了引入和使用第三方库的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue有时需要让某些元素显示,可以使用v-if和v-show,但表达形式太过生硬,某些东西需要动画来实现,vue对过渡效果和动画效果做了封装

transition

vue中元素的出现进入

vue中元素的消失离开
当需要产生过渡效果的元素被包裹时会依次的应用6个样式类

进入状态三个类名

  1. v-enter:元素在被插入之前执行,当元素被插入后被移除,定义了过渡的开始状态(很快)
  2. v-enter-active:在整个插入元素过渡状态应用,在插入之前生效在过渡完成之后失效,定义了整个插入元素的过渡状态
  3. v-enter-to:在元素被插入之后生效,当元素插入过渡动画完成之后移除,定义了插入过渡动画的完成状态

离开状态三个类名

  1. v-leave:在元素被抽出时触发,下一帧移除,定义了元素抽出的开始状态(很快)
  2. v-leave-active:在整个抽出元素过渡状态应用,在元素在元素抽出之前生效在抽出完成之后失效,定义了整个抽出元素的过渡状态
  3. v-leate-to:在元素被抽出之后生效,当元素抽出过渡动画完成之后移除,定义了抽出过渡动画的完成状态

请添加图片描述
这张图清楚的解释了进入和离开的状态,
也可以知道v-enter-active和v-leave-active
描述整个进入和离开的状态,其中重要的是v-enter和v-leave和v-enter-active和v-leave-active这几个阶段比较重要

当一个页面只有一处用到过渡或者动画不用为transtion定义name属性,css中要调用进入和离开时的类名时默认会以v开头

<transtio>
	<div class='box'></div>
</transtion>
.v-enter{
   
	opacity:0;
}

.v-enter-active{
   
	transition: opacity 1s;
}

生产中一个页面肯定不止有一个过渡或动画,所以就用到了下面的知识点为transtion定义不同的name属性来区别不同的动画和过渡,那么下面调用的方法就是将v替换为你为动画或过渡定义的name属性的值

<transtion name='fade'>
	<div class='box'></div>
</transtion>
这里看到为动画定义了一个name属性,属性名是fade

那么下面要在css中调用为它定义动画这么调用

.fade-enter{
   
	opacity:0;
}

.fade-enter-active{
   
	transition: opacity 1s
}
这是一个小案例
<template>
    <div>
        <!-- 当点击按钮对v-
### Vue2 中实现路由过渡动画的方法 在 Vue2 中,可以通过 `<transition>` 组件来实现路由之间的过渡动画效果。以下是具体实现方式以及最佳实践: #### 使用 `<transition>` 包裹 `<router-view>` 通过将 `<transition>` 组件包裹住 `<router-view>`,可以轻松定义进入离开的动画效果[^3]。 ```html <template> <div id="app"> <!-- 定义 transition --> <transition name="fade"> <router-view></router-view> </transition> </div> </template> <style> /* 进入动画 */ .fade-enter-active { animation: fadeIn 0.5s ease-in-out; } /* 离开动画 */ .fade-leave-active { animation: fadeOut 0.5s ease-in-out; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } </style> ``` 上述代码展示了如何使用 `fadeIn` `fadeOut` 的 CSS 动画来完成淡入淡出的效果。 #### 自定义动画库集成 如果需要更复杂的动画效果,可以选择引入第三方动画库,例如 **animate.css** 或者自定义关键帧动画[^1]。以下是一个基于 animate.css 的例子: ```html <template> <div id="app"> <transition name="custom-classes-transition" enter-active-class="animated slideInRight" leave-active-class="animated slideOutLeft"> <router-view></router-view> </transition> </div> </template> <script> import &#39;animate.css&#39;; export default {}; </script> ``` 在这个例子中,我们利用了 animate.css 提供的标准类名 `slideInRight` `slideOutLeft` 来分别设置进入退出时的动画效果。 #### 配置 appear 属性 为了使页面初次加载时也能够触发动画,可以在 `<transition>` 上添加 `appear` 属性[^5]。这样即使是在第一次渲染组件时也会应用指定的动画。 ```html <transition name="fade" appear> <router-view></router-view> </transition> ``` 以上配置会确保当用户访问网站的第一屏内容时也能看到平滑的过渡效果。 #### 结合动态参数调整动画行为 有时可能希望根据不同场景改变动画的表现形式,则可通过绑定动态 class 实现这一需求。 ```javascript computed: { transitionName() { return this.$route.meta.transition || &#39;default&#39;; // 默认采用&#39;default&#39;作为名称 }, }, ``` 随后修改模板部分如下所示: ```html <transition :name="transitionName"> <router-view></router-view> </transition> ``` 此时可以根据每条路径单独设定其专属的元信息字段 `meta.transition` 值从而控制各自独特的视觉体验。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值