zoukankan      html  css  js  c++  java
  • moveElement函数与positionMessage函数

    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,interval);
        
    }
     
     addLoadEvent(moveMessage);

    moveElement函数,用于使带有id元素属性的文档移动,只要给出元素id,最终x坐标,最终y坐标,时间间隔。就可以调用此函数。

    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";
            moveElement("message",200,100,10);
        }
    addLoadEvent(positionMessage);
    positionMessage函数,设置带有id元素属性文档位置函数,搭配moveElement函数可以达到动画效果。
    function moveElement(elementID,final_x,final_y,interval){
        if (!document.getElementById) return false;
        if (!document.getElementById(elementID)) return false;
        var elem=document.getElementById(elementID);
        if (elem.movement) {
            clearTimeout(elem.movement);
        }
        var xpos=parseInt(elem.style.left);
        var ypos=parseInt(elem.style.top);
        var dist=0;
        if (xpos==final_x&&ypos==final_y) {
        return true;
    }
        if (xpos<final_x) {
            dist=Math.ceil((final_x-xpos)/10);
            xpos=xpos+dist;
        }
        if (xpos>final_x) {
            dist=Math.ceil((xpos-final_x)/10);
            xpos=xpos-dist;
        }
        if (ypos<final_y) {
            dist=Math.ceil((final_y-ypos)/10);
            ypos=ypos+dist;
        }
        if (ypos>final_y) {
            dist=Math.ceil((ypos-final_y)/10);
            ypos=ypos-dist;
        }
        elem.style.left=xpos+"px";
        elem.style.top=ypos+"px";
        var repeat="moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
        elem.movement=setTimeout(repeat,interval);
        
    }
     
     addLoadEvent(moveMessage);

    这是改进版,移动速度随着初始与目标距离的增加逐渐加快。

     
  • 相关阅读:
    请问发表的文章如何备份?
    .NET中利用XML来自动生成代码策略
    XPO使用随笔
    为方便做封包分析,做了个十六进制和字符互转的网页小工具
    前端人员如何模拟慢网速环境
    补充《动态加载外部.js文件时候,javascript的执行顺序问题》
    凡客诚品官方网站的前端改进建议
    "Cachecontrol”常见的取值private、nocache、maxage、mustrevalidate及其用意
    javascript跨域操作cookie的点滴记录
    HTTPS的七个误解(译文转载)
  • 原文地址:https://www.cnblogs.com/CClarence/p/4913306.html
Copyright © 2011-2022 走看看