// 拖動的對象,需要設置draggable屬性為true(draggable="true"),
// a元素需要href,img元素需要src。
// 1、被拖對象:dragstart事件,被拖動的元素,開始拖放觸發
// 2、被拖對象:drag事件,被拖放的元素,拖放過程中
// 3、經過對象:dragenter事件,拖放過程中鼠標經過的元素,被拖放的元素“開始”進入其它元素范圍內(剛進入)
// 4、經過對象:dragover事件,拖放過程中鼠標經過的元素,被拖放的元素正在本元素范圍內移動(一直)
// 5、經過對象:dragleave事件,拖放過程中鼠標經過的元素,被拖放的元素離開本元素范圍
// 6、目標地點:drop事件,拖放的目標元素,其他元素被拖放到本元素中
// 7、被拖對象:dragend事件,拖放的對象元素,拖放操作結束
元素拖拽
需要拖拽的元素添加draggable為true,false為不能拖拽
draggable="true"
拖拽元素事件
拖拽元素的時候,被拖拽元素會觸發以下事件
- dragstart
- drag
- dragend
目標元素事件
當拖拽的元素拖到一個目標元素上時,目標元素會觸發以下事件
- dragenter
- dragover
- dragleave
- drop
拖拽設置
在dataTransfer中還有兩個重要的屬性
dropEffect和effectAllowed
dropEffect
dropEffect屬性值為字符串,表示被拖動元素可以執行哪一種放置行為
要使用這個屬性,必須在dragenter事件處理函數中設置
- none 不能把元素拖放至此(除文本框外全部元素的默認值)
- move 移動到目標
- copy 復制到目標
- link 目標打開拖動元素(拖動元素必須是鏈接並有URL)
effectAllowed
effectAllowed屬性值也是字符串,表示允許拖動元素哪種dropEffect
要使用這個屬性,必須在dragst事件處理函數中設置
- uninitialized 沒有設置任何拖放行為
- none 不能由任何行為
- copy 僅允許dropEffect值為copy
- link 僅允許dropEffect值為link
- move 僅允許dropEffect值為move
- copyLink 允許dropEffect值為copy和link
- copyMove 允許dropEffect值為copy和move
- linkMove 允許dropEffect值為link和move
- all 允許任意dropEffect