首先介绍一下这个程序的一些相关事件和方法:
event.button:事件发生时表示鼠标的动作 如果为1则是鼠标左键 2为鼠标右键 不过现在好像MS都已经有8个值了 难道以后鼠标的发展方向是8个键?
parentNode:父节点
event.ClientX:事件发生时的鼠标x值
event.ClientY:事件发生时的鼠标Y值
setCapture()方法:建立对象和鼠标之间的通讯 也就是说鼠标作用在此对象上时才跟踪鼠标
http://www.gaodaima.com/27760.html
releaseCapture()方法:切断对象和鼠标之间的通讯
JavaScript程序如下:
程序代码
<script>
var move=false;
function StartDrag(obj) //定义准备拖拽的函数
{
if(event.button==1&&event.srcElement.tagName.toUpperCase()==”DIV”)//判断事件发生地点 防止无效拖拽
{
obj.setCapture(); //对当前对象的鼠标动作进行跟踪
obj.style.background=”#999″; //改变颜色
move=true;
}
}
function Drag(obj) //定义拖拽函数
{
if(move)
{
var oldwin=obj.parentNode; //定义父对象
oldwin.style.left=event.clientX-50;//定义父对象目前位置
oldwin.style.top=event.clientY-10;
}
}
function StopDrag(obj) //定义停止拖拽函数
{
obj.style.background=”#000″; //改变颜色
obj.releaseCapture(); //停止对当前对象的鼠标跟踪
move=false;
}
</script>
HTML代码
<html>
<body>
<style>
body{font-family:Verdana;font-size:11px;color:#333;}
#win1{[position:absolute;left:100;top:100;width:200px;height:150px;border:1px solid #000;}
.title{width:100%;background:#000;height:18px;color:#fff;cursor:hand;}
</style>
<script>
var move=false;
function StartDrag(obj)
{
if(event.button==1&&event.srcElement.tagName.toUpperCase()==”DIV”)
{
obj.setCapture();
obj.style.background=”#999″;
move=true;
}
}
function Drag(obj)
{
if(move)
{
var oldwin=obj.parentNode;
oldwin.style.left=event.clientX-50;
oldwin.style.top=event.clientY-10;
}
}
function StopDrag(obj)
{
obj.style.background=”#000″;
obj.releaseCapture();
move=false;
}
</script>
<div id=”win1″>
<div class=”title” onMousemove=”Drag(this)” >窗口1</div>
This is a moveable window.<br>
Moreinfo in http://www.achome.cn .
</div>
</body>
</html>
[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
欢迎大家阅读《可以拖拽的小窗口程序(javascript)_js》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码