续:比较常见的拖动层代码。(兼容FF)

睡醒又改了改代码,更好的封装和调用,支持多个对象拖动。

 

<! doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" >
< html >
< head >
< title >  MapBox.htm  </ title >
< style >
body
{
    margin
:0px;
    font-size
:12px;
    line-height
:150%;
}


#mapbox
{
    background-color
:red;
    border
:1px solid #cccccc;
    width
:500px;
    height
:525px;
    position
:absolute;
    z-index
:86;
}


#mapbox_title
{
    padding
:3px 0px 0px 10px;
    left
:500px;
    height
:25px;
    background-color
:#efefef;
    cursor
:move;
}

#mapbox2
{
    background-color
:blue;
    border
:1px solid #cccccc;
    width
:500px;
    height
:525px;
    position
:absolute;
    z-index
:86;
}


#mapbox_title2
{
    padding
:3px 0px 0px 10px;
    left
:500px;
    height
:25px;
    background-color
:#efefef;
    cursor
:move;
}


</ style >
< script  language ="javascript"  src ="js/base.js" ></ script >
< script  language ="javascript"  src ="js/drag.js" ></ script >
</ head >
< script >
function SetupDrag(id)
{
    
var obj = $(id);
    
//BoxDrag = new Drag_Class(id);
    eval("BoxDrag_" + id + " = new Drag_Class(id);");

    
if (window.event == undefined){
        eval(
"addEvent(obj, "mousedown", BoxDrag_" + id + ".startDrag, "setCapture()");");
        eval(
"addEvent(obj, "mousemove", BoxDrag_" + id + ".Drag, "setCapture()");");
        eval(
"addEvent(obj, "mouseup", BoxDrag_" + id + ".stopDrag, "releaseCapture()");");
        
/*
        addEvent(obj, "mousedown", BoxDrag.startDrag, "setCapture()");
        addEvent(obj, "mousemove", BoxDrag.Drag, "setCapture()");
        addEvent(obj, "mouseup", BoxDrag.stopDrag, "releaseCapture()");
        
*/

    }

    
else
    
{
        eval(
"obj.onmousedown = BoxDrag_" + id + ".startDrag;");
        eval(
"obj.onmousemove = BoxDrag_" + id + ".Drag;");
        eval(
"obj.onmouseup = BoxDrag_" + id + ".stopDrag;");
        
/*
        obj.onmousedown = BoxDrag.startDrag;
        obj.onmousemove = BoxDrag.Drag;
        obj.onmouseup = BoxDrag.stopDrag;
        
*/

    }

}


window.onload 
= function()
{
    SetupDrag(
"mapbox_title");
    SetupDrag(
"mapbox_title2");
}

</ script >

< body >
    
< div  id ="mapbox"  style ="left:0px;top:0px;z-index:1" >
        
< div  id ="mapbox_title" > MapBox Title </ div >
    
</ div >
    
< div  id ="mapbox2"  style ="left:200px;top:200px;z-index:1" >
    
< div  id ="mapbox_title2" > MapBox Title </ div >
    
</ div >
< script >
</ script >
</ body >
</ html >

 Drag.js文件:

function  Drag_Class(id)
{
    
this.id = id;
}


Drag_Class.prototype.startDrag 
=   function (ev)
{
    
var obj = $(this.id).parentNode;
    obj.style.zIndex 
+= 100
    
var ev=ev||window.event;
    
this.mouse_x = ev.clientX||ev.pageX;
    
this.mouse_y = ev.clientY||ev.pageY;
    
this.obj_x = parseInt(obj.style.left.replace("px",""));
    
this.obj_y = parseInt(obj.style.top.replace("px",""));
    
this.moveable = true;
}


Drag_Class.prototype.Drag 
=   function (ev)
{
    
var obj = $(this.id).parentNode;
    
var ev=ev||window.event;
    
var ev_x = ev.clientX||ev.pageX;
    
var ev_y = ev.clientY||ev.pageY;
    
if (this.moveable)
    
{
        obj.style.left 
= this.obj_x + ev_x - this.mouse_x + "px";
        obj.style.top 
= this.obj_y + ev_y - this.mouse_y + "px";
    }

}


Drag_Class.prototype.stopDrag 
=   function ()
{
    
if (this.moveable)
    
{
        
var obj = $(this.id).parentNode;
        
this.moveable = false;
    }

}

Base.js文件:

function  $(str)
{
    
return document.getElementById(str);
}


function  addEvent(elm, evType, fn, useCapture) {
    
if (elm.addEventListener){
        elm.addEventListener(evType, fn, useCapture);
        
return true;
    }
 else if (elm.attachEvent){
        
var r = elm.attachEvent("on"+evType, fn);
        
return r;
    }
 else {
        alert(
"Handler could not be removed");
    }

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值