微信扫一扫打赏支持

黑马vue---46、vue使用过渡类名实现动画

黑马vue---46、vue使用过渡类名实现动画

一、总结

一句话总结:

vue动画的过渡类名的时间点中没有设置样式的话就是默认的样式
使用 transition 元素,把 需要被动画控制的元素,包裹起来
<transition>
    <h3 v-if="flag">这是一个H3</h3>
</transition>

 

 

1、vue动画的过渡类名的控制?

可以用数据的true和false来控制,自动触发动画效果:v-if="flag"

 

2、vue动画的过渡类名的四个时间点?

v-enter:【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入
v-enter-to:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。
v-leave:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
v-leave-to:【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了

 

3、vue动画的过渡类名的两个时间段(进出时间段的动画效果设置可以是一样的)?

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

 

 

4、vue动画的过渡类名的四个时间点中,相似的两对?

v-enter和v-leave-to
v-enter-to和v-leave

 

5、vue使用过渡类名实现动画步骤?

1、在css中设置四个时间点和两个时间段的样式
2、使用 transition 元素包裹要执行动画的部分
<!-- 2. 自定义两组样式,来控制 transition 内部的元素实现动画 -->
<style>
    /* 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;
    }
</style>

<!-- 1. 使用 transition 元素,把 需要被动画控制的元素,包裹起来 -->
<!-- transition 元素,是 Vue 官方提供的 -->
<transition>
    <h3 v-if="flag">这是一个H3</h3>
</transition>

 

 

 

二、vue使用过渡类名实现动画

1、效果图

 

 

2、代码

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5   <meta charset="UTF-8">
 6   <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7   <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8   <title>Document</title>
 9   <script src="./lib/vue-2.4.0.js"></script>
10   <!-- 2. 自定义两组样式,来控制 transition 内部的元素实现动画 -->
11   <style>
12     /* v-enter 【这是一个时间点】 是进入之前,元素的起始状态,此时还没有开始进入 */
13     /* v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了 */
14     .v-enter,
15     .v-leave-to {
16       opacity: 0;
17       transform: translateX(150px);
18     }
19 
20     /* v-enter-active 【入场动画的时间段】 */
21     /* v-leave-active 【离场动画的时间段】 */
22     .v-enter-active,
23     .v-leave-active{
24       transition: all 0.8s ease;
25     }
26   </style>
27 </head>
28 
29 <body>
30   <div id="app">
31     <input type="button" value="toggle" @click="flag=!flag">
32     <!-- 需求: 点击按钮,让 h3 显示,再点击,让 h3 隐藏 -->
33     <!-- 1. 使用 transition 元素,把 需要被动画控制的元素,包裹起来 -->
34     <!-- transition 元素,是 Vue 官方提供的 -->
35     <transition>
36       <h3 v-if="flag">这是一个H3</h3>
37     </transition>
38   </div>
39 
40   <script>
41     // 创建 Vue 实例,得到 ViewModel
42     var vm = new Vue({
43       el: '#app',
44       data: {
45         flag: false
46       },
47       methods: {}
48     });
49   </script>
50 </body>
51 
52 </html>

 

 

 

三、使用过渡类名实现动画

为什么要有动画:动画能够提高用户的体验,帮助用户更好的理解页面中的功能;

 

使用过渡类名

  1. HTML结构:
<div id="app">
    <input type="button" value="动起来" @click="myAnimate">
    <!-- 使用 transition 将需要过渡的元素包裹起来 -->
    <transition name="fade">
      <div v-show="isshow">动画哦</div>
    </transition>
  </div>
  1. VM 实例:
// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
  el: '#app',
  data: {
    isshow: false
  },
  methods: {
    myAnimate() {
      this.isshow = !this.isshow;
    }
  }
});
  1. 定义两组类样式:
/* 定义进入和离开时候的过渡状态 */
    .fade-enter-active,
    .fade-leave-active {
      transition: all 0.2s ease;
      position: absolute;
    }

    /* 定义进入过渡的开始状态 和 离开过渡的结束状态 */
    .fade-enter,
    .fade-leave-to {
      opacity: 0;
      transform: translateX(100px);
    }

 

 

 

 

 

 

 
posted @ 2019-10-31 14:25  范仁义  阅读(161)  评论(0编辑  收藏  举报