摘要:拖放一為了使元素可拖動,把屬性設置為二添加事件監聽拖放有如下事件事件拖拉過程中,在被拖拉的節點上持續觸發。在視覺上顯示拖拉進入當前節點,也是在這個事件的監聽函數中設置。該事件的監聽函數負責取出拖拉數據,并進行相關處理。
HTML5 拖放 一、為了使元素可拖動,把 draggable 屬性設置為 true
二、添加事件監聽
DragEvent
HTML5拖放有如下事件
drag事件:拖拉過程中,在被拖拉的節點上持續觸發。點擊這個鏈接查看HTML5各個拖放事件 總結dragstart事件:拖拉開始時在被拖拉的節點上觸發,該事件的target屬性是被拖拉的節點。通常應該在這個事件的監聽函數中,指定拖拉的數據。
dragend事件:拖拉結束時(釋放鼠標鍵或按下escape鍵)在被拖拉的節點上觸發,該事件的target屬性是被拖拉的節點。它與dragStart事件,在同一個節點上觸發。不管拖拉是否跨窗口,或者中途被取消,dragend事件總是會觸發的。
dragenter事件:拖拉進入當前節點時,在當前節點上觸發,該事件的target屬性是當前節點。通常應該在這個事件的監聽函數中,指定是否允許在當前節點放下(drop)拖拉的數據。如果當前節點沒有該事件的監聽函數,或者監聽函數不執行任何操作,就意味著不允許在當前節點放下數據。在視覺上顯示拖拉進入當前節點,也是在這個事件的監聽函數中設置。
dragover事件:拖拉到當前節點上方時,在當前節點上持續觸發,該事件的target屬性是當前節點。該事件與dragenter事件基本類似,默認會重置當前的拖拉事件的效果(DataTransfer對象的dropEffect屬性)為none,即不允許放下被拖拉的節點,所以如果允許在當前節點drop數據,通常會使用preventDefault方法,取消重置拖拉效果為none。
dragleave事件:拖拉離開當前節點范圍時,在當前節點上觸發,該事件的target屬性是當前節點。在視覺上顯示拖拉離開當前節點,就在這個事件的監聽函數中設置。
drop事件:被拖拉的節點或選中的文本,釋放到目標節點時,在目標節點上觸發。注意,如果當前節點不允許drop,即使在該節點上方松開鼠標鍵,也不會觸發該事件。如果用戶按下Escape鍵,取消這個操作,也不會觸發該事件。該事件的監聽函數負責取出拖拉數據,并進行相關處理。
當一個節點被拖拉到另一個節點里,觸發的事件如下:
dragstart --> drag --> dragenter --> dragover --> drop --> dragend
dragstart, drag, dragend 在被拖動的節點觸發,觸發的event.target為被拖拽的節點
dragenter dragover dragleave drop 在目標節點觸發,觸發的event.target為釋放的目標節點
在 dragover觸發時需要執行event.preventDefault(),允許被拖動的節點進入。
在firefox瀏覽器上需要注意的東西
1、在firefox上 drag、dragend 事件不能夠獲取鼠標位置
2、需要在dragstart 觸發時保存數據,不然不能拖動。
3、dataTransfer.setData()函數中 key 為‘Text’ 時會打開一個新的標簽頁
let drag = document.getElementById("drag"); drag.addEventListener("dragstart", (event) => { console.log("dragstart") // 兼容 firefox , setData()函數中 key 為‘Text’ 時會打開一個新的標簽頁 // event.dataTransfer.setData("Text","www.baidu.com"); event.dataTransfer.setData("any","www.baidu.com"); })
學習了各個事件后做了一個可以拖動的Div的demo,點擊查看
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/91872.html
摘要:介紹是一款輕量級的拖放排序列表的插件雖然體積小,但是功能很強大下載地址官方特點支持觸屏設備和大部分瀏覽器以下的就不支持了,原因都懂得可以從一個列表容器中拖拽一個列表單元到其他容器或本列表容器中進行排序移動列表單元時有動畫支持拖放操作和可選擇 介紹 Sortable.js是一款輕量級的拖放排序列表的js插件(雖然體積小,但是功能很強大)下載地址:https://github.com/Ru...
閱讀 1048·2021-11-22 15:33
閱讀 3357·2021-11-08 13:20
閱讀 1368·2021-09-22 10:55
閱讀 2053·2019-08-29 11:08
閱讀 771·2019-08-26 12:24
閱讀 3068·2019-08-23 17:15
閱讀 2225·2019-08-23 16:12
閱讀 1933·2019-08-23 16:09