• 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 被移除),在过渡/动画完成之后移除。

    如下

       
       
         
    • 1
    • 2
    • 3
    • 4
    //开始过度
    .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;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    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'
    
    • 1
    • 2
    • 3

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

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

     //4.x版本
     
            
    ---------------------------------------------------- //3.x版本
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    transition组件自带的一些属性

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

    ... //所有动画执行时长 
    
    ... //单独定义时长
    
    • 1
    • 2
    • 3

    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"//离开过度打断
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    当只用 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');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    4.appear

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

    appear-active-class=""
    appear-from-class=""
    appear-to-class=""
    
    • 1
    • 2
    • 3

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

  • 相关阅读:
    CLI、CLR、CTS、CLS
    transformers架构实现
    MySQL --- 常用函数 - 字符串函数
    【Linux】/proc/stat解析
    如何从无法开机的手机中恢复数据?4个解决方案解决了
    大屏小程序探索实践 | Cube 技术解读
    docker docker-compose 自定义网络 固定IP
    vue3前端以json样式输入组件实现
    我的创作纪念日
    机器学习笔记之高斯分布(四)关于高斯分布的推断问题
  • 原文地址:https://blog.csdn.net/Wu_whiteHyacinth/article/details/127556486