美文网首页互联网科技Web前端之路让前端飞
Vue列表过渡动画结合iScroll插件的一个小Demo

Vue列表过渡动画结合iScroll插件的一个小Demo

作者: 蓝海00 | 来源:发表于2019-07-05 15:09 被阅读66次
    gif
    GitHubDemo👉https://github.com/LanHai1/vueAnimationAndiScroll

    代码

    <!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>
        <style>
          ul {
            padding: 0;
            margin: 0;
          }
          ul > li {
            cursor: default;
          }
          input{
              float: right;
          }
          [v-cloak] {
            opacity: 0;
          }
          .con {
            width: 200px;
            height: 200px;
            border: 1px solid #000000;
          }
    
          .list-item {
            display: inline-block;
            margin-right: 10px;
          }
          .list-enter-active,
          .list-leave-active {
            transition: all 0.6s;
          }
          .list-enter, .list-leave-to
    /* .list-leave-active for below version 2.1.8 */ {
            opacity: 0;
            transform: translateX(30px);
          }
        </style>
      </head>
      <body>
        <div id="app" v-cloak>
          <input type="button" value="添加" @click="add" />
          <input type="button" value="删除" @click="remove" />
          <h1>双击li删除!</h1>
          <h1>滚动li吧!</h1>
          <br />
          <div ref="con" class="con">
            <transition-group name="list" tag="ul">
              <!-- 注意 想要删除的时候动画实现在当前删除的元素上 需要给key唯一值 不能是index -->
              <li
                v-for="(item, index) in list"
                :key="item"
                @dblclick="indexDelete(index)"
                @mouseenter="thisAddColor($event)"
                @mouseleave="thisRemove($event)"
              >
                {{ item }}
              </li>
            </transition-group>
          </div>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script src="./lib/iscroll.js"></script>
        <script>
          const vm = new Vue({
            el: "#app",
            data: {
              list: [
                "我是第1个li",
                "我是第2个li",
                "我是第3个li",
                "我是第4个li",
                "我是第5个li",
                "我是第6个li",
                "我是第7个li",
                "我是第8个li",
                "我是第9个li",
                "我是第10个li",
                "我是第11个li",
                "我是第12个li",
                "我是第13个li",
                "我是第14个li",
                "我是第15个li",
                "我是第16个li",
                "我是第17个li",
                "我是第18个li",
                "我是第19个li",
                "我是第20个li"
              ],
              count: 20,
              listSrcoll: undefined
            },
            methods: {
              add() {
                // item唯一 上面绑定了key
                this.count += 1;
                this.list.push(`我是第${this.count}个li`);
              },
              remove() {
                this.list.splice(this.list.length - 1, 1);
              },
              indexDelete(index) {
                this.list.splice(index, 1);
              },
              // 鼠标移入高亮
              thisAddColor(el) {
                el.path[0].style.backgroundColor = "#f00";
              },
              // 鼠标移除还原
              thisRemove(el) {
                el.path[0].style.backgroundColor = "transparent";
              }
            },
            mounted() {
              // 绑定iScroll
              this.listSrcoll = new IScroll(this.$refs.con, {
                mouseWheel: true // 开启鼠标滚轮支持
              });
            },
            updated() {
              // 刷新iScroll
              this.listSrcoll.refresh();
            }
          });
        </script>
      </body>
    </html>
    
    

    相关文章

      网友评论

        本文标题:Vue列表过渡动画结合iScroll插件的一个小Demo

        本文链接:https://www.haomeiwen.com/subject/knkehctx.html