成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

HTML5 DragEvent學(xué)習(xí)+制作一個(gè)可以拖動(dòng)的DIV

v1 / 3048人閱讀

摘要:拖放一為了使元素可拖動(dòng),把屬性設(shè)置為二添加事件監(jiān)聽拖放有如下事件事件拖拉過程中,在被拖拉的節(jié)點(diǎn)上持續(xù)觸發(fā)。在視覺上顯示拖拉進(jìn)入當(dāng)前節(jié)點(diǎn),也是在這個(gè)事件的監(jiān)聽函數(shù)中設(shè)置。該事件的監(jiān)聽函數(shù)負(fù)責(zé)取出拖拉數(shù)據(jù),并進(jìn)行相關(guān)處理。

HTML5 拖放 一、為了使元素可拖動(dòng),把 draggable 屬性設(shè)置為 true
二、添加事件監(jiān)聽

DragEvent

HTML5拖放有如下事件

drag事件:拖拉過程中,在被拖拉的節(jié)點(diǎn)上持續(xù)觸發(fā)。

dragstart事件:拖拉開始時(shí)在被拖拉的節(jié)點(diǎn)上觸發(fā),該事件的target屬性是被拖拉的節(jié)點(diǎn)。通常應(yīng)該在這個(gè)事件的監(jiān)聽函數(shù)中,指定拖拉的數(shù)據(jù)。

dragend事件:拖拉結(jié)束時(shí)(釋放鼠標(biāo)鍵或按下escape鍵)在被拖拉的節(jié)點(diǎn)上觸發(fā),該事件的target屬性是被拖拉的節(jié)點(diǎn)。它與dragStart事件,在同一個(gè)節(jié)點(diǎn)上觸發(fā)。不管拖拉是否跨窗口,或者中途被取消,dragend事件總是會(huì)觸發(fā)的。

dragenter事件:拖拉進(jìn)入當(dāng)前節(jié)點(diǎn)時(shí),在當(dāng)前節(jié)點(diǎn)上觸發(fā),該事件的target屬性是當(dāng)前節(jié)點(diǎn)。通常應(yīng)該在這個(gè)事件的監(jiān)聽函數(shù)中,指定是否允許在當(dāng)前節(jié)點(diǎn)放下(drop)拖拉的數(shù)據(jù)。如果當(dāng)前節(jié)點(diǎn)沒有該事件的監(jiān)聽函數(shù),或者監(jiān)聽函數(shù)不執(zhí)行任何操作,就意味著不允許在當(dāng)前節(jié)點(diǎn)放下數(shù)據(jù)。在視覺上顯示拖拉進(jìn)入當(dāng)前節(jié)點(diǎn),也是在這個(gè)事件的監(jiān)聽函數(shù)中設(shè)置。

dragover事件:拖拉到當(dāng)前節(jié)點(diǎn)上方時(shí),在當(dāng)前節(jié)點(diǎn)上持續(xù)觸發(fā),該事件的target屬性是當(dāng)前節(jié)點(diǎn)。該事件與dragenter事件基本類似,默認(rèn)會(huì)重置當(dāng)前的拖拉事件的效果(DataTransfer對(duì)象的dropEffect屬性)為none,即不允許放下被拖拉的節(jié)點(diǎn),所以如果允許在當(dāng)前節(jié)點(diǎn)drop數(shù)據(jù),通常會(huì)使用preventDefault方法,取消重置拖拉效果為none。

dragleave事件:拖拉離開當(dāng)前節(jié)點(diǎn)范圍時(shí),在當(dāng)前節(jié)點(diǎn)上觸發(fā),該事件的target屬性是當(dāng)前節(jié)點(diǎn)。在視覺上顯示拖拉離開當(dāng)前節(jié)點(diǎn),就在這個(gè)事件的監(jiān)聽函數(shù)中設(shè)置。

drop事件:被拖拉的節(jié)點(diǎn)或選中的文本,釋放到目標(biāo)節(jié)點(diǎn)時(shí),在目標(biāo)節(jié)點(diǎn)上觸發(fā)。注意,如果當(dāng)前節(jié)點(diǎn)不允許drop,即使在該節(jié)點(diǎn)上方松開鼠標(biāo)鍵,也不會(huì)觸發(fā)該事件。如果用戶按下Escape鍵,取消這個(gè)操作,也不會(huì)觸發(fā)該事件。該事件的監(jiān)聽函數(shù)負(fù)責(zé)取出拖拉數(shù)據(jù),并進(jìn)行相關(guān)處理。

點(diǎn)擊這個(gè)鏈接查看HTML5各個(gè)拖放事件 總結(jié)

當(dāng)一個(gè)節(jié)點(diǎn)被拖拉到另一個(gè)節(jié)點(diǎn)里,觸發(fā)的事件如下:

dragstart --> drag --> dragenter --> dragover --> drop --> dragend

dragstart, drag, dragend 在被拖動(dòng)的節(jié)點(diǎn)觸發(fā),觸發(fā)的event.target為被拖拽的節(jié)點(diǎn)

dragenter dragover dragleave drop 在目標(biāo)節(jié)點(diǎn)觸發(fā),觸發(fā)的event.target為釋放的目標(biāo)節(jié)點(diǎn)

在 dragover觸發(fā)時(shí)需要執(zhí)行event.preventDefault(),允許被拖動(dòng)的節(jié)點(diǎn)進(jìn)入。

在firefox瀏覽器上需要注意的東西

1、在firefox上 drag、dragend 事件不能夠獲取鼠標(biāo)位置
2、需要在dragstart 觸發(fā)時(shí)保存數(shù)據(jù),不然不能拖動(dòng)。
3、dataTransfer.setData()函數(shù)中 key 為‘Text’ 時(shí)會(huì)打開一個(gè)新的標(biāo)簽頁(yè)

let drag = document.getElementById("drag");
    drag.addEventListener("dragstart", (event) => {
        console.log("dragstart")
        // 兼容 firefox , setData()函數(shù)中 key 為‘Text’ 時(shí)會(huì)打開一個(gè)新的標(biāo)簽頁(yè)
        // event.dataTransfer.setData("Text","www.baidu.com");
        event.dataTransfer.setData("any","www.baidu.com");
    })

學(xué)習(xí)了各個(gè)事件后做了一個(gè)可以拖動(dòng)的Div的demo,點(diǎn)擊查看

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91872.html

相關(guān)文章

  • 拖放排序插件Sortable.js

    摘要:介紹是一款輕量級(jí)的拖放排序列表的插件雖然體積小,但是功能很強(qiáng)大下載地址官方特點(diǎn)支持觸屏設(shè)備和大部分瀏覽器以下的就不支持了,原因都懂得可以從一個(gè)列表容器中拖拽一個(gè)列表單元到其他容器或本列表容器中進(jìn)行排序移動(dòng)列表單元時(shí)有動(dòng)畫支持拖放操作和可選擇 介紹 Sortable.js是一款輕量級(jí)的拖放排序列表的js插件(雖然體積小,但是功能很強(qiáng)大)下載地址:https://github.com/Ru...

    tomorrowwu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<