<div contenteditable style="position:absolute;left:50px;top:20px;">
<div style="background-color:blue;" onmousedown="move(this.parentNode,event);";>拖动我</div><br>
<img border="0" src="img.gif">
</div>
<script>
function move(element,event){
var event=event||window.event;
var x=parseInt(element.style.left);
var y=parseInt(element.style.top);
var maxLeft=parseInt(document.body.clientWidth)-parseInt(element.clientWidth);
var maxTop=parseInt(document.body.clientHeight)-parseInt(element.clientHeight); var deltaX=event.clientX-x;
var deltaY=event.clientY-y;
//添加临时事件
if(document.addEventListener){//2级DOM
document.addEventListener("mousemove",moveHandler,true);
document.addEventListener("mouseup",upHandler,true);
}else if(document.attachEvent){//IE5+
document.attachEvent("onmousemove",moveHandler);
document.attachEvent("onmouseup",upHandler);
}else{//IE4
var oldonmousemove=document.onmousemove;
var oldonmouseup=document.onmouseup;
document.onmousemove=moveHandler;
document.onmouseup=upHandler;
}
//我们处理该事件,不让其他元素见到它
if(event.preventDefault){//2级DOM
event.preventDefault();
}else{//IE
event.returnValue=false;
} //鼠标移动事件
function moveHandler(e){
if(!e){//IE
e=window.event;
} element.style.left=(e.clientX-deltaX)+"px";
element.style.top=(e.clientY-deltaY)+"px";
var left=parseInt(element.style.left);
var top=parseInt(element.style.top);
if(left<0){
element.style.left="0px";
}
if(left>maxLeft){
element.style.left=maxLeft+"px";
}
if(top<0){
element.style.top="0px";
}
if(top>maxTop){
element.style.top=maxTop+"px";
}
if(e.stopPropagation){//2级DOM
e.stopPropagation();
}else{//IE
e.cancelBubble=true;
}
}
//鼠标按键弹起
function upHandler(e){
if(!e){
e=window.event;
}
if(document.removeEventListener){//2级DOM
document.removeEventListener("mouseup",upHandler,true);
document.removeEventListener("mousemove",moveHandler,true);
}else if(document.detachEvent){//IE5+
document.detachEvent("onmouseup",upHandler);
document.detachEvent("onmousemove",moveHandler);
}else{//IE4
document.onmouseup=oldonmouseup;
document.onmousemove=oldonmousemove;
}
if(e.stopPropagation){//2级DOM
e.stopPropagation();
}else{//IE
e.cancelBubble=true;
}
}
}
</script>
解决方案 »
- 麻烦各位帮我看一下-jquery 图片切换轮播上的错误
- 如何动态的修改ext fieldset里面的 component,在线等谢谢
- 我如何使用JavaScript实现日历功能?
- 为什么我照着书上的例子写的jquery 验证就不成功呢?
- 如何循环出这段Jquery文字特效
- ajax jq 实现登陆无刷新 大虾近来看看
- 请问如何判断往text框里输入的是空格键???
- 这里又在扣我的信誉分,我知道是有个帖子没结,可没人跟贴让我怎么结啊?总得来个人要分的吧。
- 一个完全让javascript弄晕的新手。。。。高分求清醒!!!(学习第一天)
- 求教,如何做出这样的效果?
- FCKeditor 在 Firefox下面弹出窗口的问题
- javascript xpath的问题
resizable效果比它的做的要好多了,就是ext的类库有些大你需要花点时间研究研究