左右震动

/**
 *左右震动 
 * @param {ElementObject} e
 * @param {Funciton} oncomplete
 * @param {Number} distance  左右震动的距离,默认5px
 * @param {Number} time 震动时长,默认500ms
 */
function shake( e, oncomplete, distance, time ){
    if( typeof e === "string" ){
        e = document.getElementById(e);
    }
    distance = distance || 5;
    time = time || 500;
    
    var originalStyle = e.style.cssText;
    e.style.position = "relative";
    
    var start  = (new Date()).getTime();
    
    animate();
    
    function animate(){
        var now = (new Date()).getTime();
        var elapsed = now - start;
        var fraction = elapsed/time;
        
        if( fraction < 1 ){
            var x = distance * Math.sin( fraction*4*Math.PI );
            e.style.left = x + "px";
            setTimeout( animate, Math.min(25,time-elapsed) );
        }else{
            e.style.cssText = originalStyle;
            if( oncomplete ){
                oncomplete(e);
            }
        }
    }
}

 

转载于:https://my.oschina.net/u/157383/blog/901697

你可能感兴趣的:(左右震动)