animation js控制 缓动效果


<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>缓动效果</title>
</head>
<body>
<div id="btn" style='position:absolute;'>按钮</div>
<script type="text/javascript">
var effect = {
insertBtn: document.getElementById("btn"),
};
effect.insertBtn.onclick = function(){
number(effect.insertBtn,18,100);
};
var number = function(node,minnum,maxnum){
var left = minnum;
var step = function(){
left+=1;
node.style.left = left + "px";
if(left < maxnum){
setTimeout(step,10);
}else{
setTimeout(stepReverse,10);
}
};
var stepReverse = function(){
left-=1;
node.style.left = left + "px";
if(left > minnum){
setTimeout(stepReverse,10);
}else{
// node.style.display = "none";
}
};
setTimeout(step,10);
};
</script>
</body>
</html>

 
<div id="box" style="position:absolute;">Hello!</div>
<script>
var timers = {
    timerID: 0,
    timers: [],
    delay:100,
    maxnum:200,
    minnum:0,
    start: function(){

        // console.log(this.timerID)
        if ( this.timerID ){
            return;
        }
        (function(){
        for ( var i = 0; i < timers.timers.length; i++ ){
            if ( timers.timers[i]() === false ) {
                timers.timers.splice(i, 1);
                i--;
            }
        }
        timers.timerID = setTimeout( arguments.callee, timers.delay );

        })();
    },
    stop: function(){
        clearTimeout( this.timerID );
        this.timerID = 0;
    },
    add: function(fn){
        this.timers.push( fn );
        this.start();
    }
};
var box = document.getElementById("box"), left = 0, top = 20;
timers.add(function(){
    box.style.left = left + "px";
    if ( ++left > timers.maxnum ){
        return false;
    }
     var step = function(){      
            left+=1;
            box.style.left = left + "px";
            if(left < timers.maxnum){
                setTimeout(step,10);
                console.log(11)
            }else{
                setTimeout(stepReverse,10);  
                console.log(22) 
            }
        };
       
        var stepReverse = function(){
            left-=1;
            box.style.left = left + "px";
            if(left > timers.minnum){
                console.log(4444) 
                setTimeout(stepReverse,10);
            }else{
                 setTimeout(step,10);
                // box.style.display = "none";
            }
            console.log(3333) 
        };
        setTimeout(step,10);   
});
// timers.add(function(){
//     box.style.top = top + "px";
//     top += 2;
//     if ( top > 180 ){
//         return false;
//     }
// });
</script>
原文地址:https://www.cnblogs.com/c-and-unity/p/5293096.html