vue3transition过渡组件

Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡:

  1. 条件渲染 (使用 v-if)

  2. 条件展示 (使用 v-show)

  3. 动态组件

  4. 组件根节点

自定义 transition 过度效果,你需要对transition组件的name属性自定义。并在css中写入对应的样式

1.过渡的类名

在进入/离开的过渡中,会有 6 个 class 切换。

#过渡 class

在进入/离开的过渡中,会有 6 个 class 切换。

classname-enter-from:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。

classname-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。

classname-enter-to:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter-from 被移除),在过渡/动画完成之后移除。

classname-leave-from:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。

classname-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。

classname-leave-to:离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave-from 被移除),在过渡/动画完成之后移除。

如下

   <button @click='flag = !flag'>切换</button>
   <transition name='fade'>
     <div v-if='flag' class="box"></div>
   </transition>
//开始过度
.fade-enter-from{
   background:red;
   width:0px;
   height:0px;
   transform:rotate(360deg)
}
//开始过度了
.fade-enter-active{
  transition: all 2.5s linear;
}
//过度完成
.fade-enter-to{
   background:yellow;
   width:200px;
   height:200px;
}
//离开的过度
.fade-leave-from{
  width:200px;
  height:200px;
  transform:rotate(360deg)
}
//离开中过度
.fade-leave-active{
  transition: all 1s linear;
}
//离开完成
.fade-leave-to{
  width:0px;
   height:0px;
}

2.自定义过渡 class 类名

trasnsition props

enter-from-class、enter-active-class、enter-to-class

leave-from-class、leave-active-class、leave-to-class

这两种方法看上去好像没什么区别,但是区别在于第二种方式可以,通过自定义class 结合第三方写好的css动画库animate css,但是第一种不能结合第三方动画库

安装库 npm install animate.css

引入 import 'animate.css'

使用方法 (aninamte 4.0以上版本要加上animate__animated前缀,3.x版本不用,直接写动画名称)

官方文档 Animate.css | A cross-browser library of CSS

 //4.x版本
 <transition
        leave-active-class="animate__animated animate__bounceInLeft"
        enter-active-class="animate__animated animate__bounceInRight"
    >
        <div v-if="flag" class="box"></div>
        ----------------------------------------------------
//3.x版本
 <transition
        leave-active-class="animate__bounceInLeft"
        enter-active-class="animate__bounceInRight"
    >
        <div v-if="flag" class="box"></div>

transition组件自带的一些属性

(1)duration控制时长或者你也可以分别指定进入和离开的持续时间:时间是毫秒

<transition :duration="1000">...</transition> //所有动画执行时长 

<transition :duration="{ enter: 500, leave: 800 }">...</transition> //单独定义时长

transition 生命周期8个

其实每一个生命周期和我们对应的class状态基本上是一个意思,但是有的时候class满足不了,我们就可以写到生命周期上,如果说有些场景css满足不了,需要使用js去计算,这样我们就可以写进生命周期里面

  @before-enter="beforeEnter" //对应enter-from,进入之前
  @enter="enter"//对应enter-active 过度曲线
  @after-enter="afterEnter"  //对应enter-to 过度完成
  @enter-cancelled="enterCancelled"  //显示过度打断
  @before-leave="beforeLeave"//对应leave-from
  @leave="leave"//对应enter-active,过度曲线
  @after-leave="afterLeave"//对应leave-to
  @leave-cancelled="leaveCancelled"//离开过度打断

当只用 JavaScript 过渡的时候,在 enterleave 钩子中必须使用 done 进行回调

结合gsap 动画库使用 GreenSock

const beforeEnter = (el: Element) => {
    console.log('进入之前from', el);
}
const Enter = (el: Element,done:Function) => {
    console.log('过度曲线');
    setTimeout(()=>{
       done()
    },3000)
}
const AfterEnter = (el: Element) => {
    console.log('to');
}

4.appear

通过这个属性可以设置初始节点过度 就是页面加载完成就开始动画 对应三个状态,这个只能实现首次渲染的,之后的还是要使用上述的方法,其次,appear也可以结合animate.css

appear-active-class=""
appear-from-class=""
appear-to-class=""

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kiiESUkt-1666861540804)(C:\Users\26387\AppData\Roaming\Typora\typora-user-images\image-20221026172826582.png)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vuetransition过渡动画是Vue.js框架中用来实现组件的进入和离开过渡效果的功能。它可以在组件的挂载和卸载时自动添加/删除 CSS 类名,实现过渡效果。开发者可以通过添加自定义的 CSS 类名来实现不同的过渡效果。 ### 回答2: Vuetransition过渡动画是一种在元素进入或离开DOM时自动添加动画效果的机制。它基于CSS3transition和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-enter、enter、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、付费专栏及课程。

余额充值