Vue中的动画机制: 参考
Vue中的动画可以认为是有生命周期的:
下面前四个事件是元素进入中到完成进入
后四个是元素离开时到完全离开
<transition v-on:before-enter="beforeEnter" v-on:enter="enter" v-on:after-enter="afterEnter" v-on:enter-cancelled="enterCancelled" v-on:before-leave="beforeLeave" v-on:leave="leave" v-on:after-leave="afterLeave" v-on:leave-cancelled="leaveCancelled" >
<!-- ... -->
</transition>
1.transition
使用默认的前缀定义动画:
<!--自定义两组样式来控制transition内部元素实现动画-->
<style> /*v-enter[这是一个时间点]是进入之前,元素的起始状态,此时还没有开始进入*/ /*v-leave-to[这是一个时间点] 是动画离开之后,离开的终止状态,此时元素动画已经结束*/ /* 这里的v-enter,v-leave-to等是为transition定义动画效果的 */ .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.8s ease; } </style>
</head>
<body>
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<!--1.使用transition使元素动起来-->
<!--transition是官方提供的-->
<transition>
<h3 v-if="flag">这是一个h3</h3>
</transition>
</div>
<script> var vm = new Vue({
el: '#app', data: {
flag: false, }, methods: {
} }) </script>
</body>
此处是在html中定义了一个
transition
标签,再使用默认的过渡的类名
来设置动画
效果: 啊这,自己试一试吧,gjf图不太好整
2.transition
使用自定义的前缀定义动画:
<style> /*默认前缀的样式*/ .v-enter, .v-leave-to {
opacity: 0; transform: translateX(80px); } .v-enter-active, .v-leave-active {
transition: all 0.8s ease; } /*my-前缀的样式*/ .my-enter, .my-leave-to {
opacity: 0; transform: translateY(80px); } .my-enter-active, .my-leave-active {
transition: all 0.8s ease; } </style>
</head>
<body>
<div id="app">
<input type="button" value="toggle" @click="flag=!flag">
<!-- transition中.为他定义属性的前缀默认是v- -->
<transition>
<h3 v-if="flag">这是一个h3</h3>
</transition>
<hr>
<input type="button" value="toggle2" @click="flag2=!flag2">
<!--此时如果不想和上面的功用一个style,可以为transition定一个name--->
<!-- 从而使该transition的样式定义的前缀为my- -->
<transition name="my">
<h6 v-if="flag2">这是一个h6</h6>
</transition>
</div>
<script> var vm = new Vue({
el: '#app', data: {
flag: false, flag2: false }, methods: {
} }) </script>
</body>
此处是在html标签中的
transition
标签里定义了一个name=前缀
,然后在style中使用前缀-enter
等定义动画
效果: 啊这,自己试一试吧,gjf图不太好整