zoukankan      html  css  js  c++  java
  • 【前端开发】】ES6属性promise封装js动画

    如下是我写的demo源码:

    可以直接复制用浏览器打开看到效果哦;
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title></title>
            <style type="text/css">
                #box{
                     50px;
                    height: 50px;
                    background: red;
                    position: absolute;
                    left: 0;
                    top: 0;
                }
            </style>
        </head>
        <body>
            <div id="box"></div>
           <script type="text/javascript">
               //利用es6 new Promise
                function movePromise(obj,attr,target,duration){
                 return new Promise((res,rej)=>{
                     var b = parseInt(getComputedStyle(obj)[attr]);
                     var c= target - b;
                     var d = duration;
                     var temp = new Date().getTime();
                     var timer = setInterval(function(){
                         var t = new Date().getTime()-temp;
                         if(t>=d){
                             clearInterval(timer);
                             t= d;
                         }    
                     var v = c/d*t + b;
                     obj.style[attr] = v+'px';
                     if(t===d){
                         res()
                     }
                 },20)
             })
             }
             //用Promise封装后可以无限加动画运动轨迹,代码简洁
             movePromise(box,"width",200,500)
             .then(()=>movePromise(box,"left",300,100))
             .then(()=>movePromise(box,"top",300,100))
             .then(()=>movePromise(box,"height",300,100))
             .then(()=>movePromise(box,"top",100,300))
             .then(()=>movePromise(box,"top",200,300))
             .then(()=>movePromise(box,"top",150,300))
           </script>
        </body>
    </html>

    如上源码动画轨迹:

    向右移动---向下移动---变高---向上移动--向下移动---向上移动 (移动时间可自己控制)

  • 相关阅读:
    用C#新建网站的方法
    zhngutils.js
    jQuery源代码学习jQuery对象构建
    前端性能书单
    预则成,不预则废
    表格
    js延时周期执行setTimeout;setInterval;clearTimeout;clearInterval
    url备份
    前端性能集合(各种测试各种资源...)
    Scrum开发模式
  • 原文地址:https://www.cnblogs.com/xiaohuizhang/p/11721364.html
Copyright © 2011-2022 走看看