【vue3】Transition过渡组件

Transition是自带的内部组件,无需引入,直接使用


        <Transition
            :duration="500"  //动画持续时间
            name="my-animate"
            enter-from-class="xxx"
            enter-active-class="xxx"
            enter-to-class="xxx"
            leave-from-class="xxx"
            leave-active-class="xxx"
            leave-to-class="xxx"
            >
            <div v-if="flag" class="box"></div>
        </Transition>

一、基本用法在这里插入图片描述

  • Transition 自带的内部组件
  • xxx-enter-from 开始进入过渡 0%
  • xxx-enter-active 过渡过程
  • xxx-enter-to 过渡完成 100%
  • xxx-leave-from 开始退出 0%
  • xxx-leave-active 退出过程
  • xxx-leave-to 退出完成 100%
    xxx是组件属性name的值,自定义的。我使用的是fade-box

<template>

    <div>
        <el-button @click="flag = !flag">change</el-button>
        <Transition name="fade-box">
            <div v-if="flag" class="box"></div>
        </Transition>
    </div>

</template>

<script setup lang='ts'>
    import { ref } from 'vue'
    const flag = ref(false)

</script>
<style scoped lang='scss'>
.box{
    width: 200px;
    height: 200px;
    background-color: red;
}

.fade-box-enter-from{
    width: 0;
    height: 0;
}
.fade-box-enter-active{
    transition: all 2s ease-in-out;
}
.fade-box-enter-to{
    width: 200px;
    height: 200px;
}
.fade-box-leave-from{

    width: 200px;
    height: 200px;
}
.fade-box-leave-active{
    transition: all 2s ease-in-out;
}
.fade-box-leave-to{
    width: 0;
    height: 0;
}


</style>

二、自定义class类名


        <Transition 
            enter-from-class="enter-from" 
            enter-active-class="enter-active" 
            enter-to-class="enter-to" 
            leave-from-class="leave-from" 
            leave-active-class="leave-active" 
            leave-to-class="leave-to" 
            >
            <div v-if="flag" class="box"></div>
        </Transition>

.enter-from{
    width: 0;
    height: 0;
}
.enter-active{
    transition: all 2s ease-in-out;
}
.enter-to{
    width: 200px;
    height: 200px;
}
.leave-from{

    width: 200px;
    height: 200px;
}
.leave-active{
    transition: all 2s ease-in-out;
}
.leave-to{
    width: 0;
    height: 0;
}

三、通过自定义class结合css动画库animate.css

animate.css官网
安装库:npm install --save-dev animate.css
引入:import 'animate.css'
主要是在enter-active-class内使用

效果图、代码如下:
在这里插入图片描述


        <Transition 
            :duration="{enter:500,leave:1000}"
            enter-active-class="animate__animated animate__rubberBand" 
            leave-active-class="animate__animated animate__backOutDown" 
            >
            <div v-if="flag" class="box"></div>
        </Transition>


<script setup lang='ts'>
    import 'animate.css'
    import { ref } from 'vue'
    const flag = ref(false)

</script>

四、生命周期


 		<Transition 
            @before-enter="enterFrom" 
            @enter="enterActive" 
            @after-enter="xxx"
            @enter-cancelled="xxx"
            @before-leave="xxx"
            @leave="leaveActive" 
            @after-leave="xxx"
            @leave-cancelled="xxx"
            @before-appear="xxx"
            @appear="xxx"
            @after-appear="xxx">
            <div v-if="flag" class="box"></div>
        </Transition>

const xxx = (el: Element) => {
    console.log( el)
}
const enterActive = (el: Element, done: Function) => {
    console.log('进入过渡曲线', el)
}


五、GSAP(js动画库)

GSAP官网地址
安装库:npm install --save-dev gsap
引入:import gsap from 'gsap'


  		<Transition 
            @before-enter="enterFrom" 
            @enter="enterActive" 
            @leave="leaveActive"
            >
            <div v-if="flag" class="box"></div>
        </Transition>



import 'animate.css'
import gsap from 'gsap'
import { ref } from 'vue'
const flag = ref(true)

const enterFrom = (el: Element) => {
    console.log('进入动画之前', el)
    gsap.set(el, {
        // width:0,
        height: 0
    })
}
const enterActive = (el: Element, done: Function) => {

    console.log('进入过渡曲线', el)
    gsap.to(el, {
        // width:200,
        height: 200,
        onComplete: () => { done() }
    })
}

const leaveActive = (el: Element, done: Function) => {
    console.log('离开过渡曲线', el)
    gsap.to(el, {
        // width:0,
        height: 0,
        onComplete: () => { done() }
    })
}

六、appear属性

通过appear属性,可以设置初始节点过渡,就是页面加载完成就开始动画,对应3个状态:appear-fromappear-activeappear-to


  		<Transition
            appear
            appear-active-class="animate__animated animate__tada" 
            appear-from-class="from" 
            appear-to-class="to">
            <div v-if="flag" class="box"></div>
        </Transition>
        
        
		.from{
			...
		}
		.to{
			...
		}

### 回答1: Vuetransition过渡动画是Vue.js框架中用来实现组件的进入和离开过渡效果的功能。它可以在组件的挂载和卸载时自动添加/删除 CSS 类名,实现过渡效果。开发者可以通过添加自定义的 CSS 类名来实现不同的过渡效果。 ### 回答2: Vuetransition过渡动画是一种在元素进入或离开DOM时自动添加动画效果的机制。它基于CSS3的transition和animation属性来实现,并且Vue提供了一些API用于手动控制过渡动画的行为。在Vue中,可以通过以下几个步骤来实现过渡动画的效果: 1. 定义CSS过渡效果:使用CSS transition或animation属性定义元素的进入和离开动画,同时使用Vue提供的CSS类名来指定不同状态下的样式,例如v-enter、v-leave-to等。 2. 在组件中添加<transition>标签:将需要添加过渡动画的元素包裹在<transition>标签中,同时添加name属性指定该过渡动画的名称,并使用CSS类名来指定不同状态下的样式。 3. 使用Vue提供的过渡钩子函数:在组件的变化过程中,Vue提供了一系列的过渡钩子函数,如before-enterenter、leave等,在这些函数中可以手动控制过渡动画的行为,例如添加自定义类名、动态修改CSS属性等。 通过以上步骤,我们就可以在Vue中实现任意复杂的过渡动画效果,例如淡入淡出、旋转、缩放等等。同时,Vue过渡动画还支持多个元素同时进行动画、并行和串行动画等高级特性,可以满足多样化的动画需求。总之,Vuetransition过渡动画是一种非常强大、易用且高度可定制的动画机制,在前端开发中有着广泛的应用。 ### 回答3: Vuetransition过渡动画是一个常用的页面交互效果,在Vue中使用transition可以实现从一个状态到另一个状态的平滑过渡效果。 如何使用Vue transition: 1. 定义过渡样式 在 Vue 中使用transition需要自定义过渡样式。Vue过渡是以类名的形式加在元素上,所以需要定义好过渡的类名和CSS样式,如下: ``` .Fade-enter-active, .Fade-leave-active { transition: opacity .5s; } .Fade-enter, .Fade-leave-to { opacity: 0; } ``` 上面这个例子中,`.Fade-enter-active`和`.Fade-leave-active`是Vue过渡动画默认的类名,分别表示进入和离开状态时的动画。 2. 定义过渡组件 定义好过渡样式后,就需要在 Vue 组件中使用过渡,如下: ``` <transition name="Fade"> <div v-if="show">这是一个过渡动画</div> </transition> ``` `<transition>`标签内部是需要过渡的内容,`name`属性表示定义的过渡样式的名称。 3. 触发过渡效果 在Vue组件中使用 `v-if` 或 `v-show` 指令来控制元素的显示和隐藏,就可以触发过渡效果。 例如: ``` <script> export default { data () { return { show: true } }, methods: { toggleShow () { this.show = !this.show } } } </script> <template> <button @click="toggleShow">toggleShow</button> <transition name="Fade"> <div v-if="show">这是一个过渡动画</div> </transition> </template> ``` 在这个例子中,点击按钮时,`show`属性的值会发生变化,从而触发过渡效果。 总结: 使用Vue transition可以让页面在元素状态发生变化时产生平滑的过渡效果,提升页面交互的体验。在使用时需要定义好过渡样式和过渡组件,并在Vue组件中使用`v-if`或`v-show`指令控制元素的显示和隐藏,从而达到触发过渡效果的目的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值