使用transition 元素 把 需要被动画控制的元素包裹起来transition元素是vue官方提供的
分为
分为两组 ENTER 和 LEAVE
其中 分别分为
两个时间点 和 一个时间段
v-enter;v-enter-to ; v-enter-active
v-leave ;v-leave-to ; v-leave-active
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script src="js/vue.js"></script>
<!--自定义两组样式来控制transition内部的元素实现动画-->
<style>
/* v-enter [这是一个时间点] 进入之前元素的起始状态,此时还没有开始进入*/
/* v-leave-to [] 动画离开之后 离开的终止状态 此时,元素动画已经结束了*/
.v-enter,
.v-leave-to{
opacity:0;
transform: translateX(80px);
}
/*v-enter-active 入场动画的时间段*/
/* v-leave-active 出场动画的时间段*/
.v-enter-active,
.v-leave-active{
transition: all 0.4s ease;
}
</style>
<body>
<!--需求:点击按钮让H3显示 再点击让H3隐藏-->
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<!--使用transition 元素 把 需要被动画控制的元素包裹起来-->
<!--transition元素是vue官方提供的-->
<transition>
<h3 v-if="flag">这是一个H3</h3>
</transition>
</div>
</body>
<script>
var vm=new Vue({
el:'#app',
data:{
flag:false
},
methods:{
}
})
</script>
</html>
实现一组动画
当我们想要 一个H3 和 一个H6的时候
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script src="js/vue.js"></script>
<!--自定义两组样式来控制transition内部的元素实现动画-->
<style>
/* v-enter [这是一个时间点] 进入之前元素的起始状态,此时还没有开始进入*/
/* v-leave-to [] 动画离开之后 离开的终止状态 此时,元素动画已经结束了*/
.v-enter,
.v-leave-to{
opacity:0;
transform: translateX(80px);
}
/*v-enter-active 入场动画的时间段*/
/* v-leave-active 出场动画的时间段*/
.v-enter-active,
.v-leave-active{
transition: all 0.4s ease;
}
.v-enter,
.v-leave-to{
opacity:0;
transform: translateY(80px);
}
.v-enter-active,
.v-leave-active{
transition: all 0.4s ease;
}
</style>
<body>
<!--需求:点击按钮让H3显示 再点击让H3隐藏-->
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<!--使用transition 元素 把 需要被动画控制的元素包裹起来-->
<!--transition元素是vue官方提供的-->
<transition>
<h3 v-if="flag">这是一个H3</h3>
</transition>
<hr>
<input type="button" value="toggle" @click="flag=!flag">
<!--使用transition 元素 把 需要被动画控制的元素包裹起来-->
<!--transition元素是vue官方提供的-->
<transition>
<h6 v-if="flag">这是一个H6</h6>
</transition>
</div>
</body>
<script>
var vm=new Vue({
el:'#app',
data:{
flag:false
},
methods:{
}
})
</script>
</html>
现在这两组动画是相同的
现在可以通过修改V-前缀来进行两组动画的分别控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<script src="js/vue.js"></script>
<!--自定义两组样式来控制transition内部的元素实现动画-->
<style>
/* v-enter [这是一个时间点] 进入之前元素的起始状态,此时还没有开始进入*/
/* v-leave-to [] 动画离开之后 离开的终止状态 此时,元素动画已经结束了*/
.v-enter,
.v-leave-to{
opacity:0;
transform: translateX(80px);
}
/*v-enter-active 入场动画的时间段*/
/* v-leave-active 出场动画的时间段*/
.v-enter-active,
.v-leave-active{
transition: all 0.4s ease;
}
.my-enter,
.my-leave-to{
opacity:0;
transform: translateY(80px);
}
.my-enter-active,
.my-leave-active{
transition: all 0.4s ease;
}
</style>
<body>
<!--需求:点击按钮让H3显示 再点击让H3隐藏-->
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<!--使用transition 元素 把 需要被动画控制的元素包裹起来-->
<!--transition元素是vue官方提供的-->
<transition>
<h3 v-if="flag">这是一个H3</h3>
</transition>
<hr>
<input type="button" value="toggle" @click="flag2=!flag2">
<!--使用transition 元素 把 需要被动画控制的元素包裹起来-->
<!--transition元素是vue官方提供的-->
<transition name="my">
<h6 v-if="flag2">这是一个H6</h6>
</transition>
</div>
</body>
<script>
var vm=new Vue({
el:'#app',
data:{
flag:false,
flag2:false
},
methods:{
}
})
</script>
</html>
通过给transition元素添加一个name属性 此时控制他的CSS就变成了"【name】-"前缀 这样就可以实现不同动画