1 <!DOCTYPE html> 2 <html lang="en"> 3 4 <head> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width,initial-scale=1.0"> 7 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 8 <title>Document</title> 9 <!--1.导入Vue的包--> 10 <script src=" https://cdn.jsdelivr.net/npm/vue"></script> 11 <style> 12 li{ 13 border:1px dashed #999; 14 margin: 5px; 15 line-height: 35px; 16 padding-left: 5px; 17 font-size: 12px; 18 } 19 li:hover{ 20 background-color: hotpink; 21 transition: all 0.8s ease; 22 width: 100%; 23 } 24 25 .v-enter, 26 .v-leave-to{ 27 opacity: 0; 28 transform: translateY(80px); 29 } 30 31 .v-enter-active, 32 .v-leave-active{ 33 transition: all 0.6s ease; 34 } 35 36 /*下面的 .v-move 和 .v-leave-active 配合使用,能够实现列表后续的元素,渐渐地漂上来的效果*/ 37 .v-move{ 38 transition: all 0.6s ease; 39 } 40 .v-leave-active{ 41 position: absolute; 42 } 43 </style> 44 </head> 45 46 <body> 47 <div id="app"> 48 <div> 49 <label> 50 Id: 51 <input type="text" v-model="id"> 52 </label> 53 54 <label> 55 Name: 56 <input type="text" v-model="name"> 57 </label> 58 59 <input type="button" value="添加" @click="add"> 60 </div> 61 <!-- <ul> --> 62 <!-- 在实现列表过渡的时候,如果需要过渡的元素,是通过v-for循环渲染出来的,不能使用transition包裹,需要使用transitionGroup --> 63 <!-- 如果要为v-for循环创建的元素设置动画,必须为每一个元素设置 :key属性 --> 64 <!-- 给transition-group 添加appear属性,实现页面刚展出来时候,入场时候的效果 --> 65 <!-- 通过 为transition-group 元素,设置tag属性,指定transition-group 渲染为指定的元素,如果不指定tag属性,默认,渲染为 span 标签 --> 66 <transition-group appear tag="ul"> 67 <li v-for="(item,i) in list" :key="item.id" @click="del(i)"> 68 {{item.id}}---{{item.name}} 69 </li> 70 </transition-group> 71 <!-- </ul> --> 72 </div> 73 74 <script> 75 //创建 Vue 实例,得到 ViewModel 76 var vm = new Vue({ 77 el:‘#app‘, 78 data:{ 79 id:‘‘, 80 name:‘‘, 81 list:[ 82 {id:1,name:‘赵高‘}, 83 {id:2,name:‘秦桧‘}, 84 {id:3,name:‘严嵩‘}, 85 {id:4,name:‘魏忠贤‘}, 86 ] 87 }, 88 methods:{ 89 add(){ 90 this.list.push({id:this.id,name:this.name}) 91 this.id=this.name=‘‘ 92 }, 93 del(i){ 94 this.list.splice(i,1) 95 } 96 } 97 }); 98 </script> 99 </body> 100 </html>