HTML之鼠標拖拽事件

鼠標對操作對象實現拖拽:

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8" />

<title></title>

<style>

body{

margin: 0;

padding: 0;

}

div{

position: absolute;

top: 200px;/*div的y軸*/

left: 150px;/*div的x軸*/

width: 300px;

height: 200px;

background-color: gray;

}

div:hover{

cursor: move;

}

</style>



<script>



/*

* 分析:

* 獲取鼠標實時移動的座標;m_move_x,m_move_y

* 鼠標按下時的座標;m_down_x,m_down_y

* div的座標;dx,dy

* 鼠標按下時,鼠標與div的偏移量;md_x,md_y

* div的新座標;ndx,ndy

*/



var isDown = false;//記錄鼠標狀態

var move_div ;//要操作的div對象

var m_move_x,m_move_y,m_down_x,m_down_y,dx,dy,md_x,md_y,ndx,ndy;



//鼠標按下

function down(){

move_div = document.getElementById("move_div");

isDown = true;



//獲取鼠標按下時座標

m_down_x = event.pageX;

m_down_y = event.pageY;



//獲取div座標

dx = move_div.offsetLeft;

dy = move_div.offsetTop;



//獲取鼠標與div偏移量

md_x = m_down_x - dx;

md_y = m_down_y - dy;

}



//鼠標移動

function move(){

move_div = document.getElementById("move_div");



//實時更新div的座標

dx = move_div.offsetLeft;

dy = move_div.offsetTop;



//獲取鼠標移動實時座標

m_move_x = event.pageX;

m_move_y = event.pageY;



//鼠標按下時移動才觸發

if(isDown){



//獲取新div座標,鼠標實時座標 - 鼠標與div的偏移量

ndx = m_move_x - md_x;

ndy = m_move_y - md_y;



//把新div座標值賦給div對象

move_div.style.left = ndx+"px";

move_div.style.top = ndy+"px";



}



}



//鼠標釋放

function up(){

isDown = false;

}





</script>





</head>

<body>

<div id="move_div" onmousedown="down()" onmouseup="up()" onmousemove="move()"></div>

</body>

</html>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章