vue 中基於html5 drag drap的拖放

2021-08-30 17:44:34 字數 1731 閱讀 8436

事情是這樣的,右邊有各種控制項,可以拖動到右邊自由區,在自由區內可以隨意拖動。

vue 中基於html5 drag drap的拖放

案例一:

開始的我,so easy! 通過繫結元素的mousedown 事件,監聽滑鼠的mousemove,和mouseup 事件,於是我輕鬆實現了同一區域內元素可以拖著跑,上**!

move (e) 

document.onmouseup = e =>

}

注意一點,被拖拽物件區域要設定position:relative, 否則的元素會自己抖動。

以上**並不能滿足需要,要左右布局,左邊的拖到右邊,在右邊區域隨便拖動。

案例二:

好吧,首先我來布個局,左右布局,給元素繫結事件,上**!

事件繫結方法:

dragstart (ev) ,

draging (e)

x -= this.offsetx

y -= this.offsety

// console.log('e left')

// console.log(x + '-' + y)/* 它的父級第乙個存在定位的元素,如果有margin減去margin值 */

e.target.style.left = x - 5 + 'px'

e.target.style.top = y - 60 + 'px'

} },

drop (ev) ,

dragend (event)

如果不出意外的話,以上**已經成功實現了元素從左邊拖到右邊。但是,右邊元素被拖走了,右邊就沒有了,然後我嘗試了各種,拖動開始時clone 元素,drap時clone元素等等,都不太完美。此時的我,崩潰……

終於,也不知道哪來的靈感,這個困擾我兩秒的難題突然就被我成功攻克了。好了,我要開始吹牛了……

案例三:

我的思路是這樣的(不想看?直接看**好了,反正是給我自己看的):左邊列表元素可拖動(draggable=『true』),繫結dragstart(開始事件),不要給它繫結draging(拖動事件),這樣左邊列表元素有拖動屬性,但是位置不會改變。當右側拖動區域

頁面上迴圈陣列元素,生成元素即往陣列中push 元素即可。 每次拖動元素都會觸發drop 事件,並不是每次都要生成乙個新元素,要知道是從左邊列表拖到右側第一次drop 的時候生成新元素。 怎麼知道呢?這就是兩個dragstart的妙處

methods:

ev.datatransfer.setdata('text', json.stringify(info))

this.offsetx = ev.offsetx

this.offsety = ev.offsety

}, drop (e)

},imgstart (e)

e.datatransfer.setdata(『text』, json.stringify(info))

this.imgoffsetx = e.offsetx

this.imgoffsety = e.offsety

},draging (e, item) ,

imgend (event)

}注意:拖動元素設定position:absolute屬性

vue 中基於html5 drag drap的拖放

HTML 5入門知識 Drag

html 5拖放 拖放的步驟 1 物件元素的draggable屬性設定為true,還需要注意的是a元素和img元素必須指定href。2 編寫與拖放有關的事件處理 datatransfer物件的屬性和方法 設定拖放時的視覺效果 dropeffect屬性與effectallowed屬性結合起來可以設定拖...

html5拖 drag 放 drop 功能

設定元素可拖動 乙個img想放到div中,首先設定img可以被拖動 draggable true 拖動什麼 ondeagstart setdata 元素拖動的時候會發生什麼,drag ev 這方法規定了被拖動的資料,ev.datatransfer.setdata text ev.target.id ...

初學HTML5 拖放(Drag 和 Drop)

internet explorer 9 firefox,opera,chrome,和 safari 支援拖動。注意 safari 5.1.2不支援拖動.id drag1 src images logo.png draggable true ondragstart drag event width 3...