var drag = function(){ var obj = document.getElementById("id"); var s = obj.style; var b = document.body; var x = event.clientX + b.scrollLeft - s.pixelLeft; var y = event.clientY + b.scrollTop - s.pixelTop; var m = function(){ if(event.button == 1){ s.pixelLeft = event.clientX + b.scrollLeft - x; s.pixelTop = event.clientY + b.scrollTop - y; }else { document.detachEvent("onmousemove", m); } }; document.attachEvent("onmousemove", m); if(!this.z) this.z = 999; s.zIndex = ++this.z; event.cancelBubble = true; };
然后在div中
<div onmousedown='subway.encapsulate.drag();return false;'/>
另外,DIV中有自己的拖動事件ondrag(),但是下面的函數還有點問題是拖動時有重影。
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
</head>
<style type="text/css">
#myDiv{
background-color:#01ff32;
height:200px;
width:200px;
top:100px;
left:300px;
position:absolute;
}
h1{
font-size:40px;
}
font{
color:red;
}
</style>
<script>
function drag(event){
document.getElementById('myDiv').style.top = event.clientY;
document.getElementById('myDiv').style.left = event.clientX;
document.getElementById('myDiv').style.cursor='default'
//event.cancelBubble = true;
document.getElementById('myDiv')
}
function changeCousor(){
}
</script>
<body>
<div id="myDiv" ondrag ="drag(event);" onmousedown = "this.draggable = true; " onmouseover="this.style.cursor='hand'">
<center>
<h1><font>drag me</font></h1>
</center>
</div>
</body>
</html>
紅色部分標記出來的部分比較重要。再有就是問題出現的原因應該是坐標的計算有點問題。目前的幾個坐標還沒有考慮清楚,后面會詳細介紹幾種坐標!