工作上遇到的需求:頁面上需要拖拽一個小方塊div拷貝至保存的容器中。
一、可拖拽
那么我們需要對小方塊div進行授權,設置draggable="true"允許其被拖動
二、定義拖拽事件
由於要對小方塊進行拷貝,因此我們可以直接在拖拽開始的事件中對小方塊進行拷貝
那么很顯然拖拽時發生的操作我們會在drag函數中進行定義:
如:在拖動事件drag中對拖動的小方塊進行了拷貝,保存在了dom中。當然有其他需求的可以再進行一些其他的操作。
三、容器的操作
對於容器而言,我們需要對其授權,操作dragover拖拽結束的事情,允許他被放下拖動的小方塊。
備注:此事件是通過阻止原生事件來允許容器被放下拖拽的小方塊。
四、拷貝事件
為了達到拷貝完成的效果,我們需要在容器的drop事件中定義好拖拽結束之后發生的事件,也就是我們需要在此將拷貝好的dom內容插入到容器中,達到渲染到頁面上,完成整個拖拽事件的效果。
備注:在drop事件中,首先要阻止原生父事件,然后我將剛剛拷貝好的this.dom小方塊直接通過appendChild插入到了頁面的容器中,實現整個頁面上拖拽渲染的整個過程。
總結:拖拽只需要定義好拖拽者允許拖拽draggable,容器允許被放置,同時定於好開始拖拽dragstart的事件以及拖拽結束dragover的事件,最后定義好放置事件drop即可完成。