<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title>
<script src="/vue-2.5.16.js"></scrpit>
<style> .v-enter, .v-leave-to { opacity: 0; transform: translateX(300px); } /* 只能用标签名,不能用类名id!元素在标准流中的样式,就是 入场动画的终点状态;同时,也是离场动画的起始状态 */ h2 { opacity: 0.5; transform: translateX(150px); } .v-enter-active, .v-leave-active { transition: all 1s ease; } /* --------------------------------------- */ .one-enter, .one-leave-to { opacity: 0; transform: translateY(300px); } .one-enter-active, .one-leave-active { transition: all 1s ease; } </style> <script src="./vue-2.5.16.js"></script> </head> <body> <div id="app"> <button @click="flag1=!flag1">1111111</button> <transition> <h2 v-if="flag1">111111111111111111111111111</h2> </transition> <hr> <!-- transition 默认 name 为 v,现在我定义为one,所以就是 one-enter....--> <button @click="flag2=!flag2">2222222</button> <transition name="one"> <p v-if="flag2">222222222222222222222222222</p> </transition> </div> <script> var vm = new Vue({ el: "#app", data: { flag1: 0, flag2: 0, }, }) </script> </body> </html>
使用animate.css
<!-- 1. 导入 现成的 动画效果库 --> <link rel="stylesheet" href="./lib/animate.css"> <script src="./lib/vue-2.5.16.js"></script> <div id="app"> <button @click="flag=!flag">Toggle</button> <!-- 2. 把要添加动画效果的元素,使用 transition 包裹 --> <!-- 3. 为 transition 添加两个属性: enter-active-class 和 leave-active-class --> <!-- 4. 为 需要过渡的 元素,添加 class="animated" 类名 --> <transition enter-active-class="bounceInDown" leave-active-class="bounceOutDown"> <h3 v-if="flag" class="animated">动起来</h3> </transition> </div>