js 拖动多div层,, IE,FF下多可行。

本文介绍了一个使用JavaScript实现的多层DIV拖动效果的示例。通过该示例,用户可以了解如何创建可拖动的层,并掌握基本的鼠标事件监听及层位置更新的实现方式。


<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312">
<title>js 拖动多div层</title>
</head>
<body>
一共三个层,下面还有一个,把他拖上来
<div id="divDialog" style='cursor:move;border:6px solid #000000;left:1px;top:2px;width:100px;height:100px;background-color:#F9F7ED;position:absolute;text-align:center'><span>Magnolia Mag.nolia</span><input type="text" style="width:50px" maxlength="5"/></div>

<div id="test1" style='cursor:move;border:6px solid #000000;left:1px;top:200px;width:150px;height:150px;background-color:#FF1A00;position:absolute;text-align:center'><span>Mozilla Red</span>
<input type="text" style="width:80px" maxlength="9"/></div>

<div id="test3" style="border:3px solid #C3D9FF;text-align:center;left:700px;top:100px;width:150px;height:250px;background-color:#ffffff;position:absolute"><div id="test31" style="cursor:move;left:300px;top:200px;width:150px;height:30px;background-color:#C3D9FF;text-align:center;vertical-align:center;line-height:30px;font-weight:bold;color:#ffffff">小 纸 条</div>一共三个层,下面还有一个,把他拖上来
<textarea style="width:130px;height:150px;">有了拖动层,做局部拖动很简单</textarea>
<input type="button" value="submit it"/></div>

<div id="test4" style="border:3px solid #CDEB8B;text-align:center;left:480px;top:150px;width:150px;height:250px;background-color:#ffffff;position:absolute"><div id="test41" style="cursor:move;left:300px;top:200px;width:150px;height:30px;background-color:#CDEB8B;text-align:center;vertical-align:center;line-height:30px;font-weight:bold;color:#ffffff">小 纸 条</div>一共三个层,下面还有一个,把他拖上来
<textarea style="width:130px;height:150px;">顺便练习下颜色搭配</textarea>
<input type="button" value="submit it"/></div>

<div id="test2" style='cursor:move;border:6px solid #000000;left:200px;top:800px;width:100px;height:100px;background-color:#EEEEEE;position:absolute;text-align:center'><span>Shiny silver</span>
<input type="button" value="hit me"/></div>










 
<script type="text/javascript" charset="utf-8">
var $=function(id){return document.getElementById(id)};
Array.prototype.extend=function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;}
function divDrag(){
var A,B,$cn;
var zIndex=1;
this.dragStart=function(e){
e=e||window.event;
if((e.which && (e.which!=1))||(e.button && (e.button!=1)))return;
var pos=this.$pos;
$cn=this.parent||this;
if(document.defaultView){
_top=document.defaultView.getComputedStyle($cn,null).getPropertyValue("top");
_left=document.defaultView.getComputedStyle($cn,null).getPropertyValue("left");}
else{
if($cn.currentStyle){_top=$cn.currentStyle["top"];_left=$cn.currentStyle["left"];}}
pos.ox=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(_left);
pos.oy=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(_top);
if(!!A){
if(document.removeEventListener){
document.removeEventListener("mousemove",A,false);
document.removeEventListener("mouseup",B,false);}
else{
document.detachEvent("onmousemove",A);
document.detachEvent("onmouseup",B);}}
A=this.dragMove.create(this);
B=this.dragEnd.create(this);
if(document.addEventListener){
document.addEventListener("mousemove",A,false);
document.addEventListener("mouseup",B,false);}
else{
document.attachEvent("onmousemove",A);
document.attachEvent("onmouseup",B);}
$cn.style.zIndex=(++zIndex);
this.stop(e);
}
this.dragMove=function(e){
e=e||window.event;
var pos=this.$pos;
$cn=this.parent||this;
$cn.style.top=(e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(pos.oy)+'px';
$cn.style.left=(e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(pos.ox)+'px';
this.stop(e);}
this.dragEnd=function(e){
var pos=this.$pos;
e=e||window.event;
if((e.which && (e.which!=1))||(e.button && (e.button!=1)))return;
$cn=this.parent||this;
if(!!(this.parent)){this.style.backgroundColor=pos.color}
if(document.removeEventListener){
document.removeEventListener("mousemove",A,false);
document.removeEventListener("mouseup",B,false);}
else{
document.detachEvent("onmousemove",A);
document.detachEvent("onmouseup",B);}
A=null;
B=null;
$cn.style.zIndex=(++zIndex);
this.stop(e);
}
this.shiftColor=function(){
this.style.backgroundColor="#EEEEEE";
}
this.position=function (e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;}
return {x:l,y:t,ox:0,oy:0,color:null}
}
this.stop=function(e){
if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}
if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}
}
this.stop1=function(e){
e=e||window.event;
if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}
}
this.create=function(bind){
var B=this;
var A=bind;
return function(e){return B.apply(A,[e]);}
}
this.dragStart.create=this.create;
this.dragMove.create=this.create;
this.dragEnd.create=this.create;
this.shiftColor.create=this.create;
this.initialize=function(){
for(var A=0,B=arguments.length;A<B;A++){
C=arguments[A];
if(!(C.push)){C=[C];}
$C=(typeof(C[0])=='object')?C[0]:(typeof(C[0])=='string'?$(C[0]):null);
if(!$C)continue;
$C.$pos=this.position($C);
$C.dragMove=this.dragMove;
$C.dragEnd=this.dragEnd;
$C.stop=this.stop;
if(!!C[1]){$C.parent=C[1];$C.$pos.color=$C.style.backgroundColor;}
if($C.addEventListener){
$C.addEventListener("mousedown",this.dragStart.create($C),false);
if(!!C[1]){$C.addEventListener("mousedown",this.shiftColor.create($C),false);}}
else{$C.attachEvent("onmousedown",this.dragStart.create($C));
if(!!C[1]){$C.attachEvent("onmousedown",this.shiftColor.create($C));}}
}
}
this.initialize.apply(this,arguments);
}
//生成拖动层很简单,只需要(参数之一如果是数组表示局部拖动,arr[0]表示拖动层,arr[1]表示整体)
new divDrag(['divDialog']);
</script>
</body>
</html>

Delphi 12.3 作为一款面向 Windows 平台的集成开发环境,由 Embarcadero Technologies 负责其持续演进。该环境以 Object Pascal 语言为核心,并依托 Visual Component Library(VCL)框架,广泛应用于各类桌面软件、数据库系统及企业级解决方案的开发。在此生态中,Excel4Delphi 作为一个重要的社区开源项目,致力于搭建 Delphi 与 Microsoft Excel 之间的高效桥梁,使开发者能够在自研程序中直接调用 Excel 的文档处理、工作表管理、单元格操作及宏执行等功能。 该项目以库文件与组件包的形式提供,开发者将其集成至 Delphi 工程后,即可通过封装良好的接口实现对 Excel 的编程控制。具体功能涵盖创建与编辑工作簿、格式化单元格、批量导入导出数据,乃至执行内置公式与宏指令等高级操作。这一机制显著降低了在财务分析、报表自动生成、数据整理等场景中实现 Excel 功能集成的技术门槛,使开发者无需深入掌握 COM 编程或 Excel 底 API 即可完成复杂任务。 使用 Excel4Delphi 需具备基础的 Delphi 编程知识,并对 Excel 对象模型有一定理解。实践中需注意不同 Excel 版本间的兼容性,并严格遵循项目文档进行环境配置与依赖部署。此外,操作过程中应遵循文件访问的最佳实践,例如确保目标文件未被独占锁定,并实施完整的异常处理机制,以防数据损毁或程序意外中断。 该项目的持续维护依赖于 Delphi 开发者社区的集体贡献,通过定期更新以适配新版开发环境与 Office 套件,并修复已发现的问题。对于需要深度融合 Excel 功能的 Delphi 应用而言,Excel4Delphi 提供了经过充分测试的可靠代码基础,使开发团队能更专注于业务逻辑与用户体验的优化,从而提升整体开发效率与软件质量。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值