第十章 用javascript实现动画效果

<html>
<head>
    <title>用javascript实现动画效果</title>
</head>
<body>
    <p id="message">Una Mattin</p>

</body>
<script type="text/javascript">

function addLoadEvent(func){
        var oldonload =window.onload;   
        if(typeof window.onload!="function"){
            window.onload=func;
        }else{
            window.onload=function(){
                oldonload();
                func();
            }
        }
    }

    function positionMessage() {
        //检测
        if (!document.getElementById)return false;
        if (!document.getElementById("message"))return false;
        //获取并添加样式
        var elem=document.getElementById("message");
        elem.style.position="absolute";
        elem.style.left="50px";
        elem.style.top="100px";
        //相隔2秒执行moveMessage函数.....
        //在2秒钟的时间里,随时可以clearTimeout(movement)取消这一跳跃行
    //  movement=setTimeout("moveMessage()",2000);

        //调用 moveElement
       moveElement('message',200,20,20);

    }
    /*
        movement变量对应着在positionMessage函数里定义的setTimeout调用。
        它并没有用var 声明,是一个全局变量。
        这意味着那个“跳跃”行为可以在positionMessage函数以外的地方被取消。

    */


    //实现渐变的动画
    function moveMessage(){
        //检测
        if (!document.getElementById)return false;
        if (!document.getElementById("message"))return false;
        //获取并添加样式
        var elem=document.getElementById("message");
        var xpos = parseInt(elem.style.left);
        var ypos = parseInt(elem.style.top);
       if(xpos == 200 && ypos ==100){
            return true;
        }
        if(xpos < 200){
            xpos++;
        }
        if(xpos > 200){
            xpos--;
        }
        if(ypos > 100){
            ypos++;
        }
        if(ypos < 100){
            ypos--;
        }
        elem.style.left = xpos +'px';
        elem.style.top = ypos +'px';
        //每隔十毫秒调用一次
        movement=setTimeout('moveMessage()',10);
    }
    /* moveMess()函数使得message元素以每次1像素的方式在浏览器窗口里移动。
      一旦这个元素的top和left属性同时等于100px和200px,这个函数就停止执行。
     */



    //对函数进行抽象
    //elemenId  你要移动的对象 
    //final_x和_y指的是移动目的地坐标
    //interval   多少毫秒调用一次

    function moveElement(elementId,final_x,final_y,interval){
    if( !document.getElementById) return false;
    if( !document.getElementById(elementId)) return false;
    var elem = document.getElementById(elementId);
    var xpos = parseInt(elem.style.left);
    var ypos = parseInt(elem.style.top);
    if(xpos == final_x && ypos == final_y){
        return true;
    }
    if(xpos < final_x){
        xpos++;
    }
    if(xpos > final_x){
        xpos--;
    }
    if(ypos < final_y){
        ypos++;
    }
    if(ypos > final_y){
        ypos--;
    }
    elem.style.left = xpos +'px';
    elem.style.top = ypos +'px';
    var repeat="moveElement('"+elementId+"',"+final_x+","+final_y+","+interval+")";
    movement=setTimeout(repeat,10);
}

    addLoadEvent(positionMessage);
    /*
        后面还有一个动画效果的demo,没写。
        知识点其实是差不多,安全机制优化,html优化,前面的章节已经理解。
    */



</script>   
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值