柚子快報(bào)邀請(qǐng)碼778899分享:
柚子快報(bào)邀請(qǐng)碼778899分享:
三、什么是源對(duì)象和目標(biāo)對(duì)象?
源對(duì)象:指的是我們鼠標(biāo)點(diǎn)擊的一個(gè)事物,這里可以是一張圖片,一個(gè)DIV,一段文本等等。
目標(biāo)對(duì)象:指的是我們拖動(dòng)源對(duì)象后移動(dòng)到一塊區(qū)域,源對(duì)象可以進(jìn)入這個(gè)區(qū)域,可以在這個(gè)區(qū)域上方懸停(未松手),可以釋松手釋放將源對(duì)象放置此處(已松手),也可以懸停后離開該區(qū)域。
四、拖拽API的相關(guān)函數(shù)
解釋了什么是源對(duì)象和目標(biāo)對(duì)象后,回歸前端中的拖拽API,由上面的操作我們可以得出幾個(gè)函數(shù)
被拖動(dòng)的源對(duì)象可以觸發(fā)的事件:
(1)ondragstart:源對(duì)象開始被拖動(dòng)
(2)ondrag:源對(duì)象被拖動(dòng)過程中(鼠標(biāo)可能在移動(dòng)也可能未移動(dòng))
(3)ondragend:源對(duì)象被拖動(dòng)結(jié)束
拖動(dòng)源對(duì)象可以進(jìn)入到上方的目標(biāo)對(duì)象可以觸發(fā)的事件:
(1)ondragenter:目標(biāo)對(duì)象被源對(duì)象拖動(dòng)著進(jìn)入
(2)ondragover:目標(biāo)對(duì)象被源對(duì)象拖動(dòng)著懸停在上方
(3)ondragleave:源對(duì)象拖動(dòng)著離開了目標(biāo)對(duì)象
(4)ondrop:源對(duì)象拖動(dòng)著在目標(biāo)對(duì)象上方釋放/松手
拖拽API總共就是7個(gè)函數(shù)??!
五、如何在拖動(dòng)的源對(duì)象事件和目標(biāo)對(duì)象事件間傳遞數(shù)據(jù)
HTML5為所有的拖動(dòng)相關(guān)事件提供了一個(gè)新的屬性:
e.dataTransfer { } //數(shù)據(jù)傳遞對(duì)象
功能:用于在源對(duì)象和目標(biāo)對(duì)象的事件間傳遞數(shù)據(jù)
源對(duì)象上的事件處理中保存數(shù)據(jù):
e.dataTransfer.setData( k, v ); //k-v必須都是string類型
目標(biāo)對(duì)象上的事件處理中讀取數(shù)據(jù):
var v = e.dataTransfer.getData( k );
示例一:實(shí)現(xiàn)一個(gè)可以隨著鼠標(biāo)拖動(dòng)而移動(dòng)的小飛機(jī)
提示:飛機(jī)需要絕對(duì)定位!ondrag事件中獲取鼠標(biāo)的坐標(biāo)值?。?!
代碼如下:
隨著鼠標(biāo)拖動(dòng)而移動(dòng)的小飛機(jī)
效果如下:
示例二:
模擬電腦中 ”垃圾桶“的效果, 總共顯示三個(gè)小飛機(jī),拖動(dòng)著某個(gè)小飛機(jī)到垃圾桶上方后,小飛機(jī)從DOM樹上刪除
提示:刪除需要從DOM子節(jié)點(diǎn)中刪除元素,需要阻止ondragover的默認(rèn)行為??!利用源對(duì)象和目標(biāo)對(duì)象的數(shù)據(jù)傳遞記錄小飛機(jī)的ID值!??!
重要信息:
ondragover有一個(gè)默認(rèn)行為!??!那就是當(dāng)ondragover觸發(fā)時(shí),ondrop會(huì)失效?。。。∵@個(gè)可能是瀏覽器的版本問題,需要以后瀏覽器不斷更新可能才會(huì)解決??!
如何阻止?
οndragοver= function(e){ //源對(duì)象在懸停在目標(biāo)對(duì)象上時(shí)
e.preventDefault(); //阻止默認(rèn)行為,使得drop可以觸發(fā)
…
}
οndrοp= function(e){ //源對(duì)象松手釋放在了目標(biāo)對(duì)象中
…
}
代碼如下:
拖動(dòng)飛機(jī)到垃圾桶后從DOM樹中刪除子元素
效果如下:
拖拽小飛機(jī)到垃圾桶刪除后:
如圖,原本三架小飛機(jī),現(xiàn)在變成了兩架?。?!
六、拖拽API的補(bǔ)充知識(shí)點(diǎn)?。。ㄖ匾嬖囍幸苍S會(huì)問到噢?。。?/p>
面試題:
如何在網(wǎng)頁中顯示客戶端(電腦)的一張圖片?
如何拖動(dòng)客戶端的網(wǎng)頁顯示在服務(wù)器端下載的頁面中?
自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。
深知大多數(shù)前端工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!
因此收集整理了一份《2024年Web前端開發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。
既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開發(fā)知識(shí)點(diǎn),真正體系化!
由于文件比較大,這里只是將部分目錄截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲?。。。▊渥ⅲ呵岸耍?/p>
最后
由于文檔內(nèi)容過多,為了避免影響到大家的閱讀體驗(yàn),在此只以截圖展示部分內(nèi)容,詳細(xì)完整版的JavaScript面試題文檔,或更多前端資料可以點(diǎn)此處獲取。
有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開發(fā)知識(shí)點(diǎn),真正體系化!**
[外鏈圖片轉(zhuǎn)存中…(img-BI1rtkfD-1712450429824)]
由于文件比較大,這里只是將部分目錄截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且會(huì)持續(xù)更新!
如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取?。。▊渥ⅲ呵岸耍?/p>
最后
[外鏈圖片轉(zhuǎn)存中…(img-OIDlr1yh-1712450429825)]
[外鏈圖片轉(zhuǎn)存中…(img-ThaAJHiT-1712450429825)]
由于文檔內(nèi)容過多,為了避免影響到大家的閱讀體驗(yàn),在此只以截圖展示部分內(nèi)容,詳細(xì)完整版的JavaScript面試題文檔,或更多前端資料可以點(diǎn)此處獲取。
柚子快報(bào)邀請(qǐng)碼778899分享:
推薦鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。