本來在項目中不是必須的,但是我覺得如果能實現拖動給客戶感覺會更好一點,所以就開始寫一個拖動,其實網上有很多可以拿過來就用的源碼,但是總想自己寫一個,因為我覺得大部分代碼寫的太多了。所以就參考他們的,寫我自己的。
實際上就是用了三個事件函數
1.onmousedown 2.onmousemove 3.onmouseup
利用這三個事件函數就可以了,代碼如下:
<script type="text/javascript">
var x,y;
function mousedown(obj)
{
obj.onmousemove = mousemove;
obj.onmouseup = mouseup;
oEvent = window.event ? window.event : event;
x = oEvent.clientX;
y = oEvent.clientY;
}
function mousemove()
{
oEvent = window.event ? window.event : event;
var _top = oEvent.clientY - y + parseInt(this.style.top) + "px";
var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
this.style.top = _top;
this.style.left = _left;
x = oEvent.clientX;
y = oEvent.clientY
}
function mouseup()
{
this.onmousemove = null;
this.onmouseup = null;
}
</script>
html部分是
<div id="div1" style="width: 100px; height: 100px; top:10px; left:15px; cursor:move; background-color:Blue; position:absolute;" onmousedown="mousedown(this)" > </div>
注意事項:
1.要拖動的div一定要把position屬性設定absolute;否則按流布局的話無法實現拖動。
2.一定要設定top和left的初始值,否則當onmousemove事件觸發時就會報錯!
存在問題:
1.只能在IE裡用,沒有實現跨瀏覽器。
2.在拖動過程中如果滑鼠快速移動,就會移出到被拖動層的外面,這時如果鬆開滑鼠,沒有清空onmousemove事件,所以當滑鼠指向時就會跟著滑鼠移動。