js拖拽

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html >
< head >
< style >
.move{cursor:move;    position:absolute;    width:100px;    height:100px;    background:green;-moz-user-select:none;/*火狐禁止选中*/}
</ style >
< script  language = "javascript" >
var X0,Y0,eX0,eY0;
var dragAble=false;
var dragObj;
var ie = (document.all) ? true : false;//是否为IE
  
function dragStart(e){//现在参数e在IE里也是是直接可以供函数使用的,比如第16行。
     var oDragHandle;
     if(ie){
         oDragHandle = e.srcElement;
     }else{
         oDragHandle = e.target;
     }    
     if(oDragHandle.className=='move') 
     {
         dragObj=oDragHandle;
         eX0= e.clientX;
         eY0= e.clientY;
         X0=parseInt(dragObj.style.left+0);    
         Y0=parseInt(dragObj.style.top+0);
         dragAble=true;
     }
}
//拖拽
function drag(e){
     if(dragAble)
     {
         var eX1= e.clientX;
         var eY1= e.clientY;            
         dragObj.style.left=X0+eX1-eX0+"px";
         dragObj.style.top=Y0+eY1-eY0+"px";
     }
}
//停止拖拽
function dragEnd(){
     dragAble=false;
}
//事件监听浏览器兼容
function addListener(element,eName,fn){
     if(ie){// ie     
         element.attachEvent("on"+eName,fn);
     }else {// firefox  , w3c
         element.addEventListener(eName,fn,false);
     }    
}
  
//添加事件监听
window.onload = function(){
     addListener(document,"mousedown",dragStart);//鼠标按下开始拖拽
     addListener(document,"mousemove",drag);//拖拽
     addListener(document,"mouseup",dragEnd);//弹起停止拖拽    
}
//注:添加了事件监听之后,IE里也可以像火狐里那样直接拿事件对象当函数的参数来用了,不必再window.event。
//但是不大清楚这是为什么,或者是说我还有什么地方理解错了,求交流。QQ:1140215489
</ script >
</ head >
  
< body >
< div  class = "move" > <!--<br/>如果样式规定里此div可选,并且没有内容的话,火狐会有bug--> </ div >
< div  class = "move"  style = "background:blue;left:200px" ></ div >
</ body >
</ html >
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值