欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

vue-基本动画

程序员文章站 2022-03-21 18:09:43
不使用动画 使用过渡类名实现动画 修改vue的前缀 第三方类实现动画 需引入css文件:`` ......

不使用动画

<div id="app">
    <input type="button" value="toggle" @click="flag=!flag">
    <!-- 需求: 点击按钮,让 h3 显示,再点击,让 h3 隐藏 -->
    <h3 v-if="flag">这是一个h3</h3>
  </div>
// 创建 vue 实例,得到 viewmodel
    var vm = new vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {}
    });

使用过渡类名实现动画

/*<!-- 2. 自定义两组样式,来控制 transition 内部的元素实现动画 -->*/
/* v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入 */
    /* v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了 */
    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translatex(150px);
    }

    /* v-enter-active 【入场动画的时间段】 */
    /* v-leave-active 【离场动画的时间段】 */
    .v-enter-active,
    .v-leave-active{
      transition: all 0.8s ease;
    }
// 创建 vue 实例,得到 viewmodel
    var vm = new vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {}
    });
// 创建 vue 实例,得到 viewmodel
    var vm = new vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {}
    });

修改vue的前缀

 /* v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入 */
    /* v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了 */
    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translatex(150px);
    }

    /* v-enter-active 【入场动画的时间段】 */
    /* v-leave-active 【离场动画的时间段】 */
    .v-enter-active,
    .v-leave-active{
      transition: all 0.8s ease;
    }




    .my-enter,
    .my-leave-to {
      opacity: 0;
      transform: translatey(70px);
    }

    .my-enter-active,
    .my-leave-active{
      transition: all 0.8s ease;
    }
<div id="app">
    <input type="button" value="toggle" @click="flag=!flag">
    <!-- 需求: 点击按钮,让 h3 显示,再点击,让 h3 隐藏 -->
    <!-- 1. 使用 transition 元素,把 需要被动画控制的元素,包裹起来 -->
    <!-- transition 元素,是 vue 官方提供的 -->
    <transition>
      <h3 v-if="flag">这是一个h3</h3>
    </transition>


    <hr>

    <input type="button" value="toggle2" @click="flag2=!flag2">
    <transition name="my">
      <h6 v-if="flag2">这是一个h6</h6>
    </transition>
  </div>
 /* v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入 */
    /* v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了 */
    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translatex(150px);
    }

    /* v-enter-active 【入场动画的时间段】 */
    /* v-leave-active 【离场动画的时间段】 */
    .v-enter-active,
    .v-leave-active{
      transition: all 0.8s ease;
    }




    .my-enter,
    .my-leave-to {
      opacity: 0;
      transform: translatey(70px);
    }

    .my-enter-active,
    .my-leave-active{
      transition: all 0.8s ease;
    }

第三方类实现动画

需引入css文件:<link rel="stylesheet" href="./lib/animate.css">

<div id="app">
    <input type="button" value="toggle" @click="flag=!flag">
    <!-- 需求: 点击按钮,让 h3 显示,再点击,让 h3 隐藏 -->
    <!-- <transition enter-active-class="animated bouncein" leave-active-class="animated bounceout">
      <h3 v-if="flag">这是一个h3</h3>
    </transition> -->

    <!-- 使用 :duration="毫秒值" 来统一设置 入场 和 离场 时候的动画时长 -->
    <!-- <transition enter-active-class="bouncein" leave-active-class="bounceout" :duration="200">
      <h3 v-if="flag" class="animated">这是一个h3</h3>
    </transition> -->

    <!-- 使用  :duration="{ enter: 200, leave: 400 }"  来分别设置 入场的时长 和 离场的时长  -->
    <transition 
    enter-active-class="bouncein" 
    leave-active-class="bounceout" 
    :duration="{ enter: 200, leave: 400 }">
      <h3 v-if="flag" class="animated">这是一个h3</h3>
    </transition> 
  </div>
// 创建 vue 实例,得到 viewmodel
    var vm = new vue({
      el: '#app',
      data: {
        flag: false
      },
      methods: {}
    });