前端Dom滑鼠點選拖拽

2021-10-20 19:08:04 字數 2209 閱讀 5630

前端時間開發的過程中,遇到乙個滑鼠拖拽dom的需求,這個需求還是十分常見的,與大家一起分享我的想法。

解決這個需求有兩種思路,其中一種是通過h5原生的拖拽事件ondragstart、ondragend,另一種則是通過監聽滑鼠的onmousedown、onmousemove、onmouseup事件。

ondragstart、ondragend詳解

1.首先確認需要被拖拽的dom,在上面加上屬性draggable為true,否則ondragstart和ondragend和ondrag事件都無法生效。

可拖拽元素

<

/div>

2.給父級元素和拖拽元素加樣式,主要是為了定位postion:relative 和position:absolute

.parent

.dragdom

3.在ondragstart事件中獲取位置,拖拽元素在父級的位置,滑鼠相對位置,在ondragend事件中獲取滑鼠位置,從而計算出滑鼠移動後的相對位置,並給拖拽元素設定新的位置。

注意: 以下**提供了拖拽的一種寫法思路,不建議直接使用

const

[startx, setstartx]

= usestate(0

);// 元素初始位置

const

[starty, setstarty]

= usestate(0

);// 元素初始位置

let startmou*** =0;

let startmousey =0;

"parent "

>

} ondragstart=

} ondragend=

// 父級的盒子寬度為800

if(newx >=

(800

- domwidth ))if

(newy <=0)

// 父級的盒子高度為800

if(newy >=

(800

- domheight )

)setstartx

(newx)

setstartx

(newy)}}

>

被拖拽的元件

<

/div>

<

/div>

onmousedown、onmousemove、onmouseup詳解

給父級元素和拖拽元素加樣式,主要是為了定位postion:relative 和position:absolute

在onmousedown中獲取滑鼠的初始位置,並建立onmousemove的監聽和onmouseup的監聽

在onmousemove中,獲取滑鼠的位置,計算出滑鼠與初始位置的位置差,並作出邊界判斷,賦值給元素的位置,

在onmouseup中取消掉onmousemove的監聽

const

[startx, setstartx]

= usestate(0

);// 元素初始位置

const

[starty, setstarty]

= usestate(0

);// 元素初始位置

let startmou*** =0;

let startmousey =0;

"parent "

>

}onmousedown=

if(targety <=0)

if(targetx >= overrigth)

if(targety >= overbottom)

setstartx

(targetx )

setstarty

(targety )};

// 請將mousemove和mouseup放到document上,否則滑鼠移動太快可能會脫節,也就是被拖拽的dom跟不上滑鼠的速度。哈哈

document.

addeventlistener

('mousemove'

, handler,

false);

document.

addeventlistener

('mouseup',(

)=>

,false,)

;}}> 被拖拽元件 <

/div>

<

/div>

獲取滑鼠點選事件

設定觸控模式 node settouchmode cc.touch mode one by one 單點觸控 或者 node settouchmode cc.touch mode all at once 多點觸控 是否啟用觸控 預設值 false node settouchenabled true ...

模擬滑鼠點選事件

今天上12306購票,可被氣得不輕,首先登陸人數受到了限制,其次買到票還有個排隊等待神馬的,先不說裡頭有沒有貓膩,電腦直接操作的,需要等待30分鐘以上嗎?神馬查詢語言要執行30分鐘才能得到個結果出來?贊同網上的言論 相比較而言,之前的搶票更能接受一些 上面是tackbar,用於隨時調整點選的時間間隔...

MFC模擬滑鼠點選

mfc 工程 把以下 放到你想要響應的函式裡面就行 cpoint pt getcursorpos pt 獲取滑鼠在螢幕的當前位置 setcursorpos 100,200 移動到某點座標 mouse event mouseeventf rightdown,0,0,0,0 點下右鍵 mouse eve...