JavaScript鼠標(biāo)拖動(dòng)事件監(jiān)聽使用方法以及實(shí)例效果演示
前言
首先鼠標(biāo)拖動(dòng)事件需要與標(biāo)簽的draggable屬性配合使用,在標(biāo)簽中設(shè)置draggable屬性為true則表示允許拖動(dòng)該元素
<body> <!-- 設(shè)置draggable為true --> <div draggable="true"></div> </body>
drag事件
鼠標(biāo)拖動(dòng)事件,當(dāng)元素被拖動(dòng)時(shí)該事件會(huì)持續(xù)重復(fù)觸發(fā),可以用于實(shí)時(shí)定位鼠標(biāo)位置以讓某元素跟隨鼠標(biāo)
<body> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("drag", (params) => { console.log("drag事件觸發(fā)"); }) </script>
dragstart事件
當(dāng)拖動(dòng)開始時(shí)觸發(fā)一次該事件,可以用于拖動(dòng)前對(duì)元素進(jìn)行一些預(yù)處理
<body> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragstart", (params) => { console.log("dragstart事件觸發(fā)"); }) </script>
dragenter事件
當(dāng)正在拖拽元素的鼠標(biāo)進(jìn)入監(jiān)聽元素時(shí)觸發(fā)事件,需要注意的是此監(jiān)聽事件需要賦在被進(jìn)入的元素上,事件源event指向被進(jìn)入的元素,可以用于當(dāng)拖拽鼠標(biāo)位于某一元素時(shí)對(duì)該元素進(jìn)行一些改變
<body> <div style="background-color: blue;"></div> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragenter", (e) => { console.log("dragenter事件觸發(fā)"); e.target.style.backgroundColor = "green" console.log("顏色改變"); }) </script>
dragleave 事件
與dragenter相反,當(dāng)鼠標(biāo)移出時(shí)觸發(fā)該事件
<body> <div style="background-color: blue;"></div> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragleave", (e) => { console.log("dragleave事件觸發(fā)"); e.target.style.backgroundColor = "green" console.log("顏色改變"); }) </script>
dragover 事件
與drag事件類似,但是范圍限制在被監(jiān)聽元素中,當(dāng)拖拽鼠標(biāo)位于監(jiān)聽元素中時(shí)就會(huì)不斷觸發(fā)該事件,即使鼠標(biāo)不移動(dòng),可以用于在元素內(nèi)跟隨鼠標(biāo)
<body> <div style="background-color: blue;"></div> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragover", () => { console.log("dragover事件觸發(fā)"); }) </script>
drop事件
該事件需要配合dragover使用,在dragover事件中給event調(diào)用.preventDefault()方法,當(dāng)鼠標(biāo)在監(jiān)聽元素內(nèi)停止拖拽時(shí)就會(huì)觸發(fā)同樣監(jiān)聽該元素的drop事件
<body> <div style="background-color: blue;"></div> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragover", (e) => { console.log("dragover事件觸發(fā)"); e.preventDefault() }) div.addEventListener("drop", () => { console.log("drop事件觸發(fā)"); }) </script>
dragend事件
該事件需要監(jiān)聽被拖拽的元素,當(dāng)該元素的拖拽被取消時(shí)dragend事件被觸發(fā),與drop使用方法類似但作用的元素不同
<body> <div draggable="true"></div> </body> </html> <script> let div = document.querySelector("div"); div.addEventListener("dragend", () => { console.log("dragend事件觸發(fā)"); }) </script>
總結(jié)
到此這篇關(guān)于JavaScript鼠標(biāo)拖動(dòng)事件監(jiān)聽使用方法以及實(shí)例效果演示的文章就介紹到這了,更多相關(guān)js鼠標(biāo)拖動(dòng)事件監(jiān)聽使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- javascript如何刪除所有事件監(jiān)聽器
- 關(guān)于js中removeEventListener取消事件監(jiān)聽的坑
- vue.js綁定事件監(jiān)聽器示例【基于v-on事件綁定】
- vue.js過濾器+ajax實(shí)現(xiàn)事件監(jiān)聽及后臺(tái)php數(shù)據(jù)交互實(shí)例
- vuejs2.0實(shí)現(xiàn)分頁組件使用$emit進(jìn)行事件監(jiān)聽數(shù)據(jù)傳遞的方法
- javascript 組合按鍵事件監(jiān)聽實(shí)現(xiàn)代碼
- 一文詳解JavaScript的事件監(jiān)聽(最新整理)
相關(guān)文章
基于webpack-hot-middleware熱加載相關(guān)錯(cuò)誤的解決方法
下面小編就為大家分享一篇基于webpack-hot-middleware熱加載相關(guān)錯(cuò)誤的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-02-02JS動(dòng)態(tài)創(chuàng)建Table,Tr,Td并賦值的具體實(shí)現(xiàn)
這篇文章介紹了JS動(dòng)態(tài)創(chuàng)建Table,Tr,Td并賦值的具體實(shí)現(xiàn),有需要的朋友可以參考一下2013-07-07原生js獲取寬高與jquery獲取寬高的方法關(guān)系對(duì)比
這篇文章主要介紹了原生js獲取寬高與jquery獲取寬高的方法關(guān)系對(duì)比,需要的朋友可以參考下2014-04-04js驗(yàn)證電話號(hào)碼與手機(jī)支持+86的正則表達(dá)式
本篇文章主要介紹了js驗(yàn)證電話號(hào)碼與手機(jī)支持+86的正則表達(dá)式。需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01JS動(dòng)態(tài)創(chuàng)建DOM元素的方法
這篇文章主要介紹了JS動(dòng)態(tài)創(chuàng)建DOM元素的方法,涉及javascript動(dòng)態(tài)創(chuàng)建DOM元素及DOM元素事件綁定與刪除的相關(guān)技巧,需要的朋友可以參考下2015-06-06JS面向?qū)ο缶幊袒A(chǔ)篇(一) 對(duì)象和構(gòu)造函數(shù)實(shí)例詳解
這篇文章主要介紹了JS面向?qū)ο缶幊虒?duì)象和構(gòu)造函數(shù),結(jié)合實(shí)例形式詳細(xì)分析了JS面向?qū)ο缶幊虒?duì)象和構(gòu)造函數(shù)具體概念、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-03-03