• vue transtion 实现分析


    这是我用js和css3,实现的vue transition组件相同的效果
    核心js

     var btn = document.getElementById('btn');
      var box = null
      btn.addEventListener('click', function() {
        if (box) return
        box = document.createElement('div')
        box.innerText = 'box'
        box.classList = 'box v-enter v-enter-active'
        document.body.appendChild(box)
        // 必须用setTimeout
        setTimeout(() => {
          box.classList.remove('v-enter')
        })
        box.addEventListener("webkitTransitionEnd", function() {
          if (!box) return
          if (box.classList.contains('v-leave-active')) {
            box.parentNode.removeChild(box)
            box = null
          }else {
            box.classList.remove('v-enter-active')
          }
          console.log("动画结束");
        })
      }, false)
    
      var leaveBtn = document.getElementById('leaveBtn');
      leaveBtn.addEventListener('click', function() {
        if (!box)return
        box.classList.add('v-leave-to', 'v-leave-active')
      },false)

    全部代码

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport"
            content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <style>
        *{
          padding:0;margin:0;
          box-sizing:border-box;
        }
        .box{
          width:100px;
          height:100px;
          border: 1px solid red;
          margin: 0 auto;
        }
        .v-enter{
          opacity: 0;
          transform: translate3d(-100px, 0, 0)
        }
        .v-enter-active{
          transition: all .8s;
        }
        .v-leave-to{
          opacity: 0;
          transform: translate3d(-100px, 0, 0)
        }
        .v-leave-active{
          transition: all .8s;
        }
        .page{
          position: absolute;
          left:0;
          top:0;
          bottom:0;
          right:0;
        }
      </style>
    </head>
    <body>
    
      <div style="text-align:center; margin: 30px;">
        <button id="btn">进入</button>
        <button id="leaveBtn">离开</button>
      </div>
      <script type="text/javascript">
      var btn = document.getElementById('btn');
      var box = null
      btn.addEventListener('click', function() {
        if (box) return
        box = document.createElement('div')
        box.innerText = 'box'
        box.classList = 'box v-enter v-enter-active'
        document.body.appendChild(box)
        // 必须用setTimeout
        setTimeout(() => {
          box.classList.remove('v-enter')
        })
        box.addEventListener("webkitTransitionEnd", function() {
          if (!box) return
          if (box.classList.contains('v-leave-active')) {
            box.parentNode.removeChild(box)
            box = null
          }else {
            box.classList.remove('v-enter-active')
          }
          console.log("动画结束");
        })
      }, false)
    
      var leaveBtn = document.getElementById('leaveBtn');
      leaveBtn.addEventListener('click', function() {
        if (!box)return
        box.classList.add('v-leave-to', 'v-leave-active')
      },false)
      </script>
    
    </body>
    </html>
  • 相关阅读:
    HDU1150(最小顶点覆盖)
    HDU2444(二分图判定+最大匹配)
    HDU1083(最大匹配)
    POJ3041(最小顶点覆盖)
    HDU2874(LCA应用:求两点之间距离,图不连通)
    UESTC(LCA应用:求两点之间的距离)
    HDU2586(LCA应用:在带权树中求任意两点之间的距离)
    POJ1986(LCA应用:求两结点之间距离)
    jmeter(54)-jmeter元件的作用域与执行顺序
    jmeter(53)-如何保证jenkins+ant+jmeter持续集成接口自动化生成的测试报告不会重复?
  • 原文地址:https://www.cnblogs.com/zph666/p/11604000.html
Copyright © 2020-2023  润新知