js學習之實現拖拽效果

2021-10-10 07:23:09 字數 2353 閱讀 4852

lang

="en"

>

>

charset

="utf-8"

>

name

="viewport"

content

="width=device-width, initial-scale=1.0"

>

>

documenttitle

>

>

html,

body

.box

style

>

head

>

>

class

="box"

>

div>

body

>

html

>

/* 

* 拖拽思路:

滑鼠開始位置a

滑鼠當前位置b(滑鼠移動過程中隨時計算的)

盒子開始位置c

盒子當前位置d = (b - a)+ c

* 拖拽觸發的條件:

1、滑鼠按住盒子才開始拖拽,滑鼠抬起則結束拖拽

2、拖拽開始後,滑鼠移動盒子才會跟著移動的

滑鼠按住盒子 mousedown

+ 記錄c

+ 記錄a

滑鼠移動 mousemove

+ 獲取b

+ 動態計算出d

+ 修改盒子的樣式,從而讓盒子跟著移動

滑鼠抬起 mouseup

+ 取消拖拽

*/// left top absolute 是距離body 的

// getboundingclientrect clientx/clienty 是距離視窗的

let box = document.

queryselector

('.box');

// 獲取當前螢幕盒子可移動的範圍

let screen = document.documentelement,

boxdata = box.

getboundingclientrect()

, minl =0,

mint =0,

maxl = screen.clientwidth - boxdata.width,

maxt = screen.clientheight - boxdata.height;

// 注意統一參照物,盒子位置、滑鼠位置是距離視窗的,還是距離body的

// 滑鼠按下開始拖拽

function

down

(ev)

=this

.getboundingclientrect()

;// 把盒子起始位置以自定義屬性的方式儲存在盒子上

this

.boxtop = top;

this

.boxleft = left;

// 把滑鼠的起始位置也儲存下來

// this.setcapture(); // ie和火狐解決焦點丟失問題方法(對谷歌無用)

this

.mou*** = ev.clientx;

this

.mousey = ev.clienty;

// 滑鼠按下才做事件繫結

// box.addeventlistener('mousemove', move);

// box.addeventlistener('mouseup', up);

// 利用事件委託解決焦點丟失問題(注意方法中的this指向,同時還要考慮怎麼移除)

this

.movefn = move.

bind

(this);

// bind會改變函式中的this指向,之後返回乙個匿名函式

this

.upfn = up.

bind

(this);

window.

addeventlistener

('mousemove'

,this

.movefn)

; window.

addeventlistener

('mouseup'

,this

.upfn);}

// 滑鼠移動拖拽中

function

move

(ev)

// 滑鼠抬起,拖拽結束

function

up(ev)

box.

addeventlistener

('mousedown'

, down)

;

js實現滑鼠拖拽效果

拖拽狀態 0 滑鼠在元素上按下的時候 滑鼠在元素上移動的時候 滑鼠在任何時候放開的時候 將以上思路翻譯成js 就可以實現拖拽的效果了。上面這個原理也可以演變為 拖拽原理2 拖拽狀態 0 滑鼠在元素上按下的時候 滑鼠在元素上移動的時候 滑鼠在任何時候放開的時候 將以上思路翻譯成js 就可以實現拖拽的效...

JS實現拖拽效果 Sestid

1 在css中設定你要進行拖拽的或者元素的樣式 2 在js中獲取元素,以及他的寬高和瀏覽器的寬高 3 在要被拖拽的元素上繫結滑鼠按下事件 4 阻止瀏覽器預設行為 5 獲取游標在元素按下時的座標 6 繫結元素移動事件 7 獲取游標在可視視窗的座標 8 計算拖動的定位位置 9 判斷是否在視窗範圍內 10...

js實現拖拽效果(一) 原理實現

js 拖拽乙個元素的原理 首先要明白三個值 滑鼠的位置a 盒子的位置b 滑鼠在盒子內的距離c 涉及到三個滑鼠事件 然後就可以開始講明實現過程了 html class box div css box box hover js var box document.queryselector box 獲取元...