Vue封装的过渡与动画

news/2024/7/10 2:24:23 标签: javascript, css3, 前端, vue

目录

一、Vue动画内置组件

(1)Transition

(2)TransitionGroup

二、Vue中使用css过渡效果class

三、Vue组件实现动画

(1)单个动画,用transition

 (2)多个动画用transition-group内置组件

四、引入animate.css来实现动画

(1)在vscode终端进行安装

(2)在组件Test3的script中进行引入

(3)然后在transition组件内置中进行使用


一、Vue动画内置组件

(1)Transition

它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上;

可以传入name属性来声明一个过渡效果名,用v-if或v-show对其元素动画进行切换

(2)TransitionGroup

当实现多个动画效果时,用其进行包裹,和transition一样可以设置过渡名,但此时必须给其内部标签设置key属性

二、Vue中使用css过渡效果class

1.v-enter-from:进入动画的起始状态。在元素插入之前添加,在元素插入完成后的下一帧移除。

2.v-enter-active:进入动画的生效状态。应用于整个进入动画阶段。

3.v-enter-to:进入动画的结束状态。在元素插入完成后的下一帧被添加,在动画完成之后移除。

4.v-leave-from:离开动画的起始状态。在离开过渡效果被触发时立即添加,在一帧后被移除。

5.v-leave-active:离开动画的生效状态。应用于整个离开动画阶段。

6.v-leave-to:离开动画的结束状态。在一个离开动画被触发后的下一帧被添加 在过渡或动画完成之后移除

三、Vue组件实现动画

(1)单个动画,用transition

用一个按钮控制显示还是隐藏,来去带有动画效果,Test组件

<template>

   <div>

        <!-- 用isShow判断是隐藏还是显示 -->

        <button @click="isShow=!isShow">显示/隐藏</button>

        <!-- 想要谁有动画的效果,将谁用transition标签包裹起来  appear代表刚开始就有动画-->

        <transition name='do'  appear>

            <h2  v-show="isShow" >你好呀!</h2>

        </transition>

       

   </div>

</template>

<script>

// 里面为暴漏的vue实例

export default {

    name:'Test',

    data(){

        return {

            isShow:true

        }

    }

}

</script>

<style>

    h2{

        background-color: chartreuse;

        width: 400px;

    }

    /* vue提供的属性设置 */

    .do-enter-active{

         animation: MyAnimation 1s ;

    }

    .do-leave-active{

         animation: MyAnimation 1s reverse;

    }

   

    @keyframes MyAnimation {

        from{ transform: translateX(-100%);}

        to{ transform: translateX(0px);}

       

    }

</style>

在App.vue中导入Test.vue组件,并配置使用,产生的效果

 (2)多个动画用transition-group内置组件

当点击显示或隐藏时,一个以动画效果离开,一个以动画效果进入

<template>
   <div>
        <!-- 用isShow判断是隐藏还是显示 -->
        <button @click="isShow=!isShow">显示/隐藏</button>
        <!-- 想要谁有动画的效果,将谁用transition标签包裹起来  appear代表刚开始就有动画-->
        <transition-group name="do" appear>
            <!-- 一个显示,一个不显示 -->
            <h2  v-show="!isShow"  key="1">你好呀!</h2>
            <h2  v-show="isShow" key="2">你好呀!</h2>
        </transition-group>
        
   </div>
</template>

<script>
// 里面为暴漏的vue实例
export default {
    name:'Test2',
    data(){
        return {
            isShow:true
        }
    }

}
</script>

<style>
    h2{
        background-color: chartreuse;
        width: 400px;
       
    }
    /* vue提供的属性设置 进入的起点 */
    .do-enter, .do-leave-to{
        transform: translateX(-100%);
         
    }
     /* 来去的整个过程激活的动作 */
    .do-enter-active,.do-leave-active{
         /* 怎样过渡 */
        transition: 0.5s linear;
        
    }
    /* 进入的终点 */
    .do-enter-to,.do-leave{
        transform: translateX(0px);
         
    }
</style>

在App.vue中导入Test2.vue组件,并配置使用,产生的效果

四、引入animate.css来实现动画

(1)在vscode终端进行安装

npm install animate.css

(2)在组件Test3的script中进行引入

import 'animate.css';

(3)然后在transition组件内置中进行使用

 <transition

         appear

         name="animate_animated animate_bounce"

         enter-active-class="animate_swing"

         leave-active-class="animate backOutUp"

         >

        <h2  v-show="isShow" >你好呀!</h2>

        </transition>

整体代码

<template>

   <div>

        <!-- 用isShow判断是隐藏还是显示 -->

        <button @click="isShow=!isShow">显示/隐藏</button>

        <transition

         appear

         name="animate_animated animate_bounce"

         enter-active-class="animate_swing"

         leave-active-class="animate backOutUp"

         >

        <h2  v-show="isShow" >你好呀!</h2>

        </transition>

   </div>

</template>

<script>

import 'animate.css';

// 里面为暴漏的vue实例

export default {

    name:'Test2',

    data(){

        return {

            isShow:true

        }

    }

}

</script>

<style>

    h2{

        background-color: chartreuse;

        width: 400px;

    }

</style>

在App.vue中导入Test3.vue组件,并配置使用,产生的效果

可以产生进入有摇摆效果,离开有飞动效果


http://www.niftyadmin.cn/n/197996.html

相关文章

Linux之软件包管理

一、软件包管理简介 在Linux系统中&#xff0c;软件包管理是一项重要的任务&#xff0c;可以帮助用户方便地安装、升级和卸载软件包。 1、软件包分类 源代码包&#xff1a;源代码包包含软件的源代码&#xff0c;用户需要将源代码编译成可执行文件&#xff0c;才能在系统中运…

化妆品Cosmetics

前言 加油 原文 化妆品常用会话 ❶ This product can effectively block, repair, activate and whiten skin. 这个产品可以有效的隔离,修复,激活和美白肌肤。 ❷ A facial mask involves quiet time, deep cleaning, and relaxation of the facial muscles. 敷面膜时能享…

三星引入ChatGPT半个月泄密3次;MidJourney V5相机镜头完整参数列表;万字长文,拆解投身大模型3个本质问题 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『三星引入 ChatGPT 半个月泄密三次』数据安全是个大问题啊&#xff01; 据韩国媒体报道&#xff0c;三星电子 (Samsung Electronics)…

Windows中使用7-Zip压缩或解压缩时报错解决:客户端没有所需的特权

1.报错 2.解决办法 点击开始&#xff0c;查看7-Zip 软件文件夹或者直接找到7-Zip 软件的安装路径&#xff0c;电击以管理员身份运行 找到需要压缩或者解压缩的文件的位置&#xff0c;完成&#xff01;

【Nowcoder牛客刷题记录】——Python数据分析(二)

目录 五、数据清洗 DA24 去掉信息不全的用户 DA25 修补缺失的用户数据 DA26 解决牛客网用户重复的数据 DA27 统一最后刷题日期的格式 六、Json处理 DA28 将用户的json文件转换为表格形式 七、分组聚合 DA29 牛客网的每日练题量 DA30 牛客网用户练习的平均次日留存率 …

快速排序(挖坑法 前后指针法 非递归版本)

上一次我们说了快速排序的hoare的版本&#xff0c;但是该版本有很多问题&#xff0c;首先是需要控制很多边界&#xff0c;比较复杂一点 其次就是上一次的快速排序还是有很多的其他问题 我们试着想一下&#xff0c;如果我们用快速排序拍有序数组&#xff0c;那会怎么样&#x…

redis高可用-哨兵模式搭建(1主2从3哨兵)

本篇介绍的搭建方式&#xff0c;是1主2从3哨兵&#xff0c;共6个节点。这6个节点都在同一台机器&#xff0c;所以是伪集群。生产环境&#xff0c;为了达到真正高可用&#xff0c;6个节点要部署到不同机器上。 下面开始搭建&#xff0c;先从整体看一下要做哪些工作 文章目录1、r…

14届蓝桥杯Python总结

在比赛的时候大家头脑注意力都高度集中&#xff0c;比较紧绷&#xff0c; 我是不喜欢太紧绷的神经的&#xff0c;这时候电脑就夸得一下关机重启了&#xff0c;我当时真的想说关的好&#xff0c;休息一会&#xff08;哈哈哈&#xff09; 重启后我就继续做题&#xff0c;虽然出了…