动画
动画,本质是一个效果,与交互功能无关, 通常开发过程中首先实现功能,而后添加动画。Vue中常用的过渡动画,实现显示或者隐藏等,优化用户体验。
使用场景
Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡
1、条件渲染 (使用 v-if)
2、条件展示 (使用 v-show)3、结合路由切换
使用步骤
1、把需要结合动画变化的元素,使用transition包裹起来
2、起一个过渡动画的名字3、设置动画
常用的过度的类名
v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
v-leave-to: 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。
v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
代码示例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>动画</title>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<style>
/*设置起始值*/
.fade-enter,
.fade-leave-to {
transform: translateY(-50px);
opacity: 0;
}
/*设置动画的变化过程*/
.fade-enter-active,
.fade-leave-active {
transition: 1s ease;
}
#app {
width: 300px;
margin: auto;
border: 1px solid lightblue;
border-radius: 8px;
text-align: center;
padding: 10px;
}
.wrapper {
width: 100px;
height: 100px;
background: red;
margin: 20px auto;
}
</style>
</head>
<body>
<div id="app">
<button @click="showDiv()">{{btnText}}</button>
<transition name="fade">
<div class="wrapper" v-if="isShow"></div>
</transition>
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data: {
isShow: true,
btnText: '点击移出'
},
methods:{
showDiv(){
this.isShow=!this.isShow;
if (!this.isShow) {
this.btnText = '点击进入';
}else{
this.btnText = '点击移出';
}
}
}
})
</script>
效果图