Vue,动画-列表动画(添加,删除,进场效果)

Vue,动画-列表动画(添加,删除)

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6     <meta http-equiv="X-UA-Compatible" content="ie=edge">
  7     <title>Document</title>
  8     <script src="../js/vue.js"></script>
  9     <script src="../js/vue-resource-1.3.4.js"></script>
 10 </head>
 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         width: 100%;
 19     }
 20 
 21     li:hover{
 22         background-color: blue;
 23         transition: all 1s ease;
 24     }
 25 
 26     .v-enter,
 27     .v-leave-to{
 28         opacity: 0;
 29         transform: translateY(80px);
 30     }
 31 
 32     .v-enter-active,
 33     .v-leave-active{
 34         transition: all 0.5s ease; 
 35     }
 36 
 37     /* 下面的 .v-move 和 .v-leave-active 配合使用, 能够实现列表后续的元素, 渐渐地飘上来的结果 */
 38     .v-move{
 39         transition: all 0.5s ease;
 40     }
 41 
 42     .v-leave-active{
 43         position: absolute;
 44     }
 45 </style>
 46 <body>
 47     <div id="app">
 48 
 49         <div>
 50 
 51             <label>
 52                 Id:
 53                 <input type="text" v-model="id">
 54             </label>
 55 
 56             <label>
 57                 Name:
 58                 <input type="text"  v-model="name">
 59             </label>
 60 
 61 
 62             <input type="button" value="添加" @click="add">
 63 
 64         </div>
 65 
 66 
 67         <ul>
 68             <!-- 在实现列表过渡的时候, 如果需要过渡的元素, 是通过 v-for 循环渲染出来的, 不能使用 transition 包裹, 需要使用 transitionGroup -->
 69             <!-- 如果要为 v-for 循环创建的元素设置动画, 必须为每一个 元素 设置 :key 属性 -->
 70             <transition-group appear>
 71 
 72                 <!-- 删除需要传入i -->
 73                 <li v-for="(item, i) in list" :key="item.id" @click="del(i)">
 74                     {{ item.id }}  ---  {{ item.name }}
 75                 </li>
 76             </transition-group> 
 77             
 78         </ul>
 79     </div>
 80 </body>
 81 </html>
 82 <script>
 83   var vm = new Vue({
 84       el:'#app',
 85       data:{
 86           id:'',
 87           name:'',
 88         list:[
 89             {id: 1, name: '赵高' },
 90             {id: 2, name: '秦桧' },
 91             {id: 3, name: '严嵩' },
 92             {id: 4, name: '魏忠贤' }
 93         ]
 94       },
 95       methods:{
 96 
 97         add(){
 98             this.list.push( {id : this.id, name : this.name })
 99             this.id  = this.name = ""
100         },
101         del(i){
102             // 从 i 的地方删, 删除一个
103             this.list.splice(i, 1)
104         }
105 
106       }
107   })
108 </script>

效果图

原文地址:https://www.cnblogs.com/wo1ow1ow1/p/11102526.html