位置对了,好像还有点问题,目前还不知道怎么处理:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tool</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body {
margin: 0;
}
</style>
<script type="text/javascript">
var mX=0;
var mY=0;
var flag=0;
var h=0;
var w=0;
var tar=null;function myTool(toolname,toolnum,isDefault,parentAppend)
{
this.name = toolname;
this.index = toolnum;
//tool img
this.t=document.createElement('img');
this.t.outimg='http://www.csdn.net/ui/scripts/Csdn/_resources/FrameMDI/message.gif';
this.t.overimg='http://www.csdn.net/ui/scripts/Csdn/_resources/FrameMDI/post.gif';
this.t.src=isDefault?this.t.overimg:this.t.outimg;
this.t.num=this.index;
with(this.t.style)
{
border = "solid 1px #AAA";
margin = "0px 5px 5px 0px";
position='relative';
top=2;
left=2;
}
parentAppend.appendChild(this.t);
//event
this.t.onmousedown=function()
{
flag=1;
h=event.screenX;
w=event.screenY;
tar=event.srcElement;
}
this.t.onmousemove=function()
{ }
this.t.onmouseover=function()
{
this.src=this.overimg;
}
this.t.onmouseout=function()
{
this.src=this.outimg;
}
}function mousemove()
{
mX=event.screenX;
mY=event.screenY;
if(!flag)
return false;
if(mY>=w&&mX>=h){
tar.style.top=parseInt(tar.style.pixelTop)+Math.abs(mY-w);
tar.style.left=parseInt(tar.style.pixelLeft)+Math.abs(mX-h);
}else if(mY>=w&&mX<h){
tar.style.top=parseInt(tar.style.pixelTop)+Math.abs(mY-w);
tar.style.left=parseInt(tar.style.pixelLeft)-Math.abs(h-mX);
}else if(mY<w&&mX>=h){
tar.style.top=parseInt(tar.style.pixelTop)-Math.abs(w-mY);
tar.style.left=parseInt(tar.style.pixelLeft)+Math.abs(mX-h);
}else if(mY<w&&mX<h){
tar.style.top=parseInt(tar.style.pixelTop)-Math.abs(w-mY);
tar.style.left=parseInt(tar.style.pixelLeft)-Math.abs(h-mX);
}
h=event.screenX;
w=event.screenY;
}function mouseup()
{flag=0;}function pageinit()
{
var i=document.getElementById('icon');
new myTool('tool1',1,false,i);
new myTool('tool2',2,false,i);
new myTool('tool3',3,false,i);
new myTool('tool4',4,false,i);
}
</script>
</head>
<body onload="pageinit();">
<div style="border:1px solid darkred;position:absolute;left:120px;top:120px;text-align:center;background:pink;width:600px;height:400px;" onmousemove="mousemove()" onmouseup="mouseup()">
<div style="width:128px;height:34px;background:lightblue;border:1px solid darkturquoise;position:absolute;top:100px;left:100px;" id="icon">
</div>
</div>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Tool</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
body {
margin: 0;
}
</style>
<script type="text/javascript">
var mX=0;
var mY=0;
var flag=0;
var h=0;
var w=0;
var tar=null;function myTool(toolname,toolnum,isDefault,parentAppend)
{
this.name = toolname;
this.index = toolnum;
//tool img
this.t=document.createElement('img');
this.t.outimg='http://www.csdn.net/ui/scripts/Csdn/_resources/FrameMDI/message.gif';
this.t.overimg='http://www.csdn.net/ui/scripts/Csdn/_resources/FrameMDI/post.gif';
this.t.src=isDefault?this.t.overimg:this.t.outimg;
this.t.num=this.index;
with(this.t.style)
{
border = "solid 1px #AAA";
margin = "0px 5px 5px 0px";
position='relative';
top=2;
left=2;
}
parentAppend.appendChild(this.t);
//event
this.t.onmousedown=function()
{
flag=1;
h=event.screenX;
w=event.screenY;
tar=event.srcElement;
}
this.t.onmousemove=function()
{ }
this.t.onmouseover=function()
{
this.src=this.overimg;
}
this.t.onmouseout=function()
{
this.src=this.outimg;
}
}function mousemove()
{
mX=event.screenX;
mY=event.screenY;
if(!flag)
return false;
if(mY>=w&&mX>=h){
tar.style.top=parseInt(tar.style.pixelTop)+Math.abs(mY-w);
tar.style.left=parseInt(tar.style.pixelLeft)+Math.abs(mX-h);
}else if(mY>=w&&mX<h){
tar.style.top=parseInt(tar.style.pixelTop)+Math.abs(mY-w);
tar.style.left=parseInt(tar.style.pixelLeft)-Math.abs(h-mX);
}else if(mY<w&&mX>=h){
tar.style.top=parseInt(tar.style.pixelTop)-Math.abs(w-mY);
tar.style.left=parseInt(tar.style.pixelLeft)+Math.abs(mX-h);
}else if(mY<w&&mX<h){
tar.style.top=parseInt(tar.style.pixelTop)-Math.abs(w-mY);
tar.style.left=parseInt(tar.style.pixelLeft)-Math.abs(h-mX);
}
h=event.screenX;
w=event.screenY;
}function mouseup()
{flag=0;}function pageinit()
{
var i=document.getElementById('icon');
new myTool('tool1',1,false,i);
new myTool('tool2',2,false,i);
new myTool('tool3',3,false,i);
new myTool('tool4',4,false,i);
}
</script>
</head>
<body onload="pageinit();">
<div style="border:1px solid darkred;position:absolute;left:120px;top:120px;text-align:center;background:pink;width:600px;height:400px;" onmousemove="mousemove()" onmouseup="mouseup()">
<div style="width:128px;height:34px;background:lightblue;border:1px solid darkturquoise;position:absolute;top:100px;left:100px;" id="icon">
</div>
</div>
</body>
</html>
var dragObject = null;
var curTarget = null;function makeDraggable(item){
if(!item) return;
item.onmousedown = function(ev){
dragObject = this.parentNode;
//alert(this.parentNode.tagName);
mouseOffset = getMouseOffset(this.parentNode, ev);
return false;
}
}function getMouseOffset(target, ev){
ev = ev || window.event; var docPos = getPosition(target);
var mousePos = mouseCoords(ev);
return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}function getPosition(e){
var left = 0;
var top = 0;
while (e.offsetParent){
left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0);
e = e.offsetParent;
} left += e.offsetLeft + (e.currentStyle?(parseInt(e.currentStyle.borderLeftWidth)).NaN0():0);
top += e.offsetTop + (e.currentStyle?(parseInt(e.currentStyle.borderTopWidth)).NaN0():0); return {x:left, y:top};}function mouseCoords(ev){
if(ev.pageX || ev.pageY){
return {x:ev.pageX, y:ev.pageY};
}
return {
x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
y:ev.clientY + document.body.scrollTop - document.body.clientTop
};
}function mouseDown(ev){
ev = ev || window.event;
var target = ev.target || ev.srcElement; if(target.onmousedown || target.getAttribute('DragObj')){
return false;
}
}function mouseUp(ev){ dragObject = null; iMouseDown = false;
}
function mouseMove(ev){
ev = ev || window.event; /*
We are setting target to whatever item the mouse is currently on Firefox uses event.target here, MSIE uses event.srcElement
*/
var target = ev.target || ev.srcElement;
var mousePos = mouseCoords(ev); if(dragObject){
dragObject.style.position = 'absolute';
dragObject.style.top = (mousePos.y - mouseOffset.y) + "px";
dragObject.style.left = (mousePos.x - mouseOffset.x) + "px";
} // track the current mouse state so we can compare against it next time
lMouseState = iMouseDown; // this prevents items on the page from being highlighted while dragging
if(curTarget || dragObject) return false;
}document.onmousemove = mouseMove;
document.onmousedown = mouseDown;
document.onmouseup = mouseUp;window.onload = function() {
makeDraggable(document.getElementById('这里写要拖动层的id'));}
</script>
"位置对了,好像还有点问题,目前还不知道怎么处理:"
拖动的对象是<img>,不是<div>
这两种元素在拖动时间好象有区别,所以鼠标会出现禁止符样的图标,具体没试过.
比如:<img>是个实体,不知道有没有event.offsetX值
定位要4个判断,不简单.to:btbtd
庄稼需要灌溉....to:ericloot
比较复杂.有时间看看.
现在要处理一些别的事情,过些时间在回来看下这个