JavaScript实现Div层拖动功能详解

作者:竹影时间:2026-10-23 13:34:35浏览:617

本文介绍如何利用JavaScript实现Div层的自由拖动功能。通过绑定onmousedown、onmousemove和onmouseup等鼠标事件,结合setCapture/releaseCapture方法,实现跨浏览器的层拖动效果。代码包含HTML结构定义和JavaScript逻辑处理,适用于需要动态交互界面的Web开发场景。

JavaScript实现Div层拖动功能详解

利用JavaScript实现Div层拖动功能


程序功能:利用JavaScript开发在界面上随意拖动以下html code中的div层。


JavaScript移动Div层代码实现


HTML代码部分


代码如下:

<div id="div_Info" style="display: none; dz-index: 101; left: 175px; width: 650px;
position: absolute; top: 346px;" align="center">
<table border="0" cellpadding="0" cellspacing="0">
<tr>
<%-- 以下td中添加了javascript代码移动层,拖动层的几个事件
onmousedown事件当鼠标单击时发生
onmousemove 事件会在鼠标指针移动时发生
onmouseup 事件会在鼠标按键被松开时发生,
onmouseout 事件会在鼠标指针移出指定的对象时发生--%>
<td style="width: 628px; height: 22px; background-color: #3f3200;" class="div_table_bian"
onmousedown="movetianyamessage(div_Info, event)" onmousemove="movetianyamessageend(event);"
onmouseup="movetianyamessageend(event)" onmouseout="movetianyamessageend(event)">
</td>
<td style="width: 22px; background-color: #221B00; font-size: 12px; color: #ffffff;
height: 22px;" align="center" class="div_table_notLeft_bian" >
<a href="javascript:disponseNone(div_Info)" style=" color:White;">x</a></td>
</tr>
<tr>
<td colspan="2" style="background-color: #000000" align="center" valign="top" class="div_table_notTop_bian">
<table border="0" cellpadding="0" cellspacing="0" style="width: 90%">
<tr>
<td style="height: 25px;"></td>
</tr>
<tr>
<td style="height: 23px;" class="white12px" align="center">
<asp:Label ID="div_lblTitle" runat="server" Font-Size="16px"></asp:Label></td></tr>
<tr><td style="height: 15px" valign="top"></td></tr>
<tr><td id="Div_Td_Content" runat="server" class="white12px" valign="top"></td></tr>
<tr><td runat="server" class="white12px" valign="top" style="height: 15px"></td></tr>
<tr><td class="white12px" style="height: 40px" align="center" valign="middle">
<asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/images/returns.jpg"
OnClientClick="disponse_div(div_Info);return false;" /></td></tr>
</table>
</td></tr>
</table>
</div>

JavaScript移动Div层代码实现


代码如下:

<script language="javascript">
// javascript文件
/*调用方法
//onmousedown="movetianyamessage(div_Info, event)" onmousemove="movetianyamessageend(event);"
//onmouseup="movetianyamessageend(event)" onmouseout="movetianyamessageend(event)"
//onmousedown=鼠标点下的时候 onmousemove=鼠标经过的时候 onmouseup=鼠标弹起来的时候 onmouseout=鼠标离开的时候
*/ 
var tianyamessage = ''
var iLayerMaxNum = 999;
document.onmouseup = movetianyamessageend;
document.onmousemove = movetianyamessagestart;
var tianyamessagepixefX;
var tianyamessagepixefY;
function movetianyamessage(Object, event)
{ 
tianyamessage = Object.id;
if(document.all)
{ 
document.getElementById(tianyamessage).setCapture();
tianyamessagepixefX = event.x - document.getElementById(tianyamessage).style.pixelLeft;
tianyamessagepixefY = event.y - document.getElementById(tianyamessage).style.pixelTop;
} 
else if(window.captureEvents)
{ 
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
tianyamessagepixefX = event.layerX;
tianyamessagepixefY = event.layerY;
} 
document.getElementById(tianyamessage).style.zIndex = iLayerMaxNum;
iLayerMaxNum = iLayerMaxNum + 1;
} 
function movetianyamessagestart(evt)
{ 
if(tianyamessage!=''){
if(document.all)
{ 
document.getElementById(tianyamessage).style.left = event.x - tianyamessagepixefX;
document.getElementById(tianyamessage).style.top = event.y - tianyamessagepixefY;
} 
else if(window.captureEvents)
{ 
document.getElementById(tianyamessage).style.left = (evt.clientX - tianyamessagepixefX) + "px";
document.getElementById(tianyamessage).style.top = (evt.clientY - tianyamessagepixefY) + "px";
} 
} 
} 
function movetianyamessageend(evt)
{ 
if(tianyamessage!='')
{ 
if(document.all)
{ 
document.getElementById(tianyamessage).releaseCapture();
tianyamessage='';
} 
else if(window.captureEvents){
window.captureEvents(Event.MOUSEMOVE|Event.MOUSEUP);
tianyamessage='';
} 
} 
} 
function disponse_div(obj)
{ 
if(obj.style.display=="block")
{ 
obj.style.display="none";
} 
else
{ 
obj.style.display="block";
} 
} 
</script>
作者最新文章