vue动画—列表的添加和删除效果

注意:

1.通过v-for遍历多个元素时,不用transition而用transition-group包裹。同时,需要定义key属性。

2.注意一下边框的虚线效果,以前没注意。以及退场时,套用的两段代码,以后理解。

3.transition-group还要两个属性,appear属性指定整体的列表渲染时的动画,tag="ul"为渲染transition-group时不当作<span>

标签(不符合规范),而是渲染成tag属性指定的标签类型。

HTML代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../lib/vue.js"></script>
    
    <style>
        li{
            border: 1px dashed #777777;
            /*dashed表示虚线*/
            border-radius: 3px;
            margin: 5px;
            line-height: 150%;
            padding: 10px 10px;
        }
        
        .v-enter,
        .v-lerve-to{
            opacity: 0;
            transform: translateY(80px);
        }
        .v-enter-active,
        .v-lerve-active{
            transition: all 1s ease;
        }
        /*添加进场效果*/
        
        .v-move{
            transition: all 2s ease;
        }
        .v-leave-active{
            position: absolute;
        }
        /*三板斧记住以后理解*/
    </style>
</head>
<body>
      <div id="app">
          <div>
               <lable>
                   name:
                   <input type="text" v-model="name">
               </lable>    
               <lable>
                   qq号:
                   <input type="text" v-model="qq">
               </lable>
               <lable>
                   幸福指数:
                   <input type="text" v-model="happyNum">
               </lable>

               <input type="button" @click="add" value="插入">
          </div>
          
          <ul>
              <transition-group appear tag="ul">
                  <li v-for="(item,i) in list" :key="item.happyNum" @click="del(i)" >
                      {{ item.name }} +++ {{ item.qq }}  +++{{ item.happyNum }}
                  </li>
              </transition-group>
              <!--对于v-for遍历有一组数据的过渡,不能使用transition包裹后,然后定义动画效果,而是使用transition-group进行包裹-->
              <!--同时,对于transition-group包裹的元素,必须要有唯一的key属性,同数据库关键字效果-->
          </ul>
      </div>
      
      <script>
          var vm = new Vue({
              el:'#app',
              data:{
                  name:null,
                  qq:null,
                  happyNum:'',
                  //还是注意这里如果这里是查询,不能写null表示空,而是直接使用‘’表示
                  list:[{name:'陈小帅',qq:3199578835,happyNum:10},
                       {name:'陈帅帅',qq:3199578835,happyNum:5},
                       {name:'陈da帅',qq:3199578835,happyNum:9},
                     
            ]
              },
              methods:{
                 add(){
                     this.list.push({ name:this.name,qq:this.qq,happyNum:this.happyNum});
                     this.name = this.qq = this.happyNum = '';
                 },
                 del(i){
                     this.list.splice(i,1);
                 }
              }
          });
      </script>
</body>
</html>

效果:

猜你喜欢

转载自blog.csdn.net/qq_42036616/article/details/82874195