vuebase-5.过渡和动画

Posted xiao-peng-ji

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vuebase-5.过渡和动画相关的知识,希望对你有一定的参考价值。

动画的方案:

1.在 CSS 过渡和动画中自动应用 class

2.可以配合使用第三方 CSS 动画库,如 Animate.css

3.在过渡钩子函数中使用 javascript 直接操作 DOM

4.可以配合使用第三方 JavaScript 动画库,如 Velocity.js

-----------

实现动画的元素必须脱离文档流

过渡的类名:

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

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

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

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

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

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

  6. v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。

App.vue

<template>
<div id="app">
<img src="./assets/logo.png">
<!-- <HelloWorld/> -->
<Parent />
<!-- <Music/> -->
<slotDemo>
<!-- <div>hello插槽</div>
<template slot="v1">
<div class="v1">slotParentmsg</div>
</template>
<template slot="v2">
<div class="v1">v2内容</div>
</template> -->
<div slot-scope="slotparents"><h2>slotparents.msgs</h2></div>
</slotDemo>
<animtes></animtes>
</div>
</template>

<script>
/* import HelloWorld from ‘./components/HelloWorld‘ */
import Parent from ‘./components/parent‘
import Music from ‘./components/music‘
import slotDemo from ‘./components/slotDemo‘
import animtes from ‘./components/animtes‘
export default
name: ‘App‘,
components:
Parent,
Music,
slotDemo,
animtes
,
data()
return
slotParentmsg:"插槽的动态内容"

,
methods:



</script>

<style>
#app
font-family: ‘Avenir‘, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;

</style>

animtes.vue-----------------------------------------------------------------------------------------------------------

<template>
<div class="animtes">
<button v-on:click="show = !show">
Toggle
</button>
<transition name="fade">
<p v-if="show">hello</p>
</transition>
<button v-on:click="flag = !flag" style="display:block;width:200px;margin:0 auto;">
NewToggle按钮
</button>
<transition name="ve">
<p v-if="flag">hello NewToggle</p>
</transition>
<button v-on:click="flag1 = !flag1" style="display:block;width:200px;margin:0 auto;">
NewTogglecss按钮
</button>
<transition name="custom-classes-transition"
enter-active-class="animated rollIn"
leave-active-class="animated zoomInUp">
<p class="ves" v-if="flag1">ves NewToggle 11111</p>
</transition>
<p></p>
<button v-on:click="flag2 = !flag2" style="display:block;width:200px;margin:0 auto;">
NewTogglecss按钮flag2
</button>
<transition name="vesf">
<p class="ves" v-if="flag2">ves NewToggleflag2 11111</p>
</transition>
</div>
</template>

<script>
export default
name: "animtes",
data()
return
show: true,
flag:true,
flag1:true,
flag2:true

,
methods:



</script>

<style lang="css" scoped>
/* .fade-enter-active,
.fade-leave-active
transition: opacity .5s;

.fade-enter,
.fade-leave-to



opacity: 0;
*/
/* .fade-leave-active below version 2.1.8 */
/* 0的状态*/
.ve-enter,
.ve-leave-to
opacity: 0;

/* 1的状态*/
.ve-enter-to,
.ve-leave
opacity: 1;

/* 过渡*/
.ve-enter-active,
.ve-leave-active
transition:opacity 0.5s;

.ves
width:200px;
height:200px;
background-color:red;
text-align:center;
font-size:20px;

/* 0的状态*/
.ves-enter,
.ves-leave-to
opacity: 0;
width:0;
height:0;

/* 1的状态*/
.ves-enter-to,
.ves-leave
opacity: 1;
height:200px;
width:200px;

/* 过渡*/
.ves-enter-active,
.ves-leave-active
transition:all 1s;

/* ***********************************vesf********************************/
/* 0的状态*/
.vesf-enter,
.vesf-leave-to

/* 1的状态*/
.vesf-enter-to,
.vesf-leave

/* 过渡*/
.vesf-enter-active
animation:bounce-in 0.5s;

.vesf-leave-active
animation:bounce-in 0.5s reverse;

@keyframes bounce-in
0%
transform: scale(0);

50%
transform: scale(1.5);

100%
transform: scale(1);


@keyframes bounce-out
0%
transform: scale(1);

50%
transform: scale(1.5);

100%
transform: scale(0);


</style>

 

以上是关于vuebase-5.过渡和动画的主要内容,如果未能解决你的问题,请参考以下文章

iOS中动画组、过渡动画

Vue之过渡动画

前端(过渡动画)

css3过渡和动画的区别详解

如何设置动画和过渡属性

42 vue3过渡和动画属性控制过渡时长