现在的位置: 首页 > 综合 > 正文

Div 层的拖动 脚本

2013年04月09日 ⁄ 综合 ⁄ 共 3329字 ⁄ 字号 评论关闭
JavaScript
  1. // JScript 文件
  2. /***********************窗口拖动************************/ 
  3.   function   beginDrag(elementToDrag,event) 
  4.   { 
  5. //计算元素原左上角与鼠标的距离 
  6.       //moveHandler要这值 
  7.       /*计算对象与鼠标之间的距离,x,y坐标*/ 
  8.       var   delatX=event.clientX-parseInt(elementToDrag.style.left); 
  9.       var   delatY=event.clientY-parseInt(elementToDrag.style.top); 
  10.       //注册响应mousemove和mousedown事件后的mouseup事件的处理程序 
  11.       if(document.addEventListener) 
  12.       {     //2级DOM事件模型 
  13.           //注册捕捉事件处理程序 
  14.           document.addEventListener("mousemove",moveHandler,true); //添加事件,并设置事件的相应顺序 true为先执行 moveHandler() 
  15. document.addEventListener("mouseup",upHandler,true); 
  16.       } 
  17.       else if(document.attachEvent) 
  18.       {   //IE5+   的事件模型 
  19.    
  20.           /*在IE事件模型中,我们不能捕捉事件,所以只有当事件起泡到这些处理程序时, 
  21.           它们才被触发.   假设不存在干涉元素,   处理了事件后它们就停止传播*/ 
  22.        
  23.           document.attachEvent("onmousemove",moveHandler); 
  24.           document.attachEvent("onmouseup",upHandler); 
  25.       } 
  26.       else 
  27.       { 
  28.           //IE4事件模型 
  29.           //IE4我们不能使用attachEvent方法,所以存储了以前赋予的处理 
  30.           //程序后,直接赋予新的事件处理程序,这样可以恢复旧的处理程序. 
  31.           //注意,这样依赖于事件起泡. 
  32.           var oldmovehandler=document.onmousemove; 
  33.           var olduphandler=document.onmouseup; 
  34.           document.onmousemove=moveHandler; 
  35.           document.onmouseup=upHandler; 
  36.       } 
  37.       //我们处理了该事件,不要再让其他元素看见. 
  38.       if(event.stopPropagation) 
  39.         event.stopPropagation();   //2   级DOM 
  40.       else 
  41.         event.cancelBubble=true//IE 
  42.    
  43.       //下面禁止执行默认动作 
  44. if(event.preventDefault) 
  45.         event.preventDefault();     //2级DOM 
  46.       else 
  47.         event.returnValue=false//IE 
  48.          
  49.       /*这是元素被拖动时捕捉mousemove事件的处理程序. 
  50.       * 它负责移动元素 
  51.       */ 
  52.       function moveHandler(e) 
  53.       { 
  54.           if(!e)e=window.event; //IE事件模型; 
  55.        //把元素移动到鼠标当前的位置,根据初始鼠标点击的偏移量进行调整 
  56.           elementToDrag.style.left=(e.clientX-delatX)+"px"//e.clientX 鼠标位置 
  57.           elementToDrag.style.top=(e.clientY-delatY)+"px"
  58.           //不要再让其他元素看到该事件. 
  59.           if(e.stopPropagation)e.stopPropagation();     //2级DOM 
  60.           else e.cancelBubble=true//IE 
  61.       } 
  62.       /*     这是捕捉拖移结束最后发生的mouseup事件的处理程序. 
  63.         */ 
  64.       function upHandler(e) 
  65.       { 
  66.           if(!e)   e=window.event; //IE事件模型. 
  67.           //注销捕捉事件程序. 
  68.           if(document.removeEventListener){//DOM事件模型 
  69.               document.removeEventListener("mouseup",upHandler,true); 
  70.               document.removeEventListener("mousemove",moveHandler,true); 
  71.          } 
  72.           else if(document.detachEvent){//IE5+事件模型 
  73.               document.detachEvent("onmouseup",upHandler); 
  74.               document.detachEvent("onmousemove",moveHandler); 
  75.           } 
  76.           else{//IE事件模型 
  77.               document.onmouseup=olduphandler; 
  78.               document.onousemove=oldmovehandler; 
  79.           } 
  80.  //不要再让事件进一步传播. 
  81.           if(e.stopPropagation)   e.stopPropagation();     //2级DOM 
  82.           else e.cancelBubble = true//IE 
  83.      } 
  84.   } 

Html代码:

  1. <body>
  2.     <div id="objPlay" style=" background-color:Yellow; width: 200px; height: 200px; position: absolute; left: 0px;
  3.         top: 0px; z-index: 1; position:absolute;top:200px;left:200px" onmousedown="beginDrag(this,event);">
  4.     </div>
  5.     <div id="Div1" style=" background-color:Yellow; width: 200px; height: 200px; position: absolute; left: 0px;
  6.         top: 0px; z-index: 1;position:absolute;top:400px;left:400px" onmousedown="beginDrag(this,event);">
  7.     </div>
  8. </body>

抱歉!评论已关闭.