js實現(xiàn)簡單的拖拽效果
本文實例為大家分享了js實現(xiàn)簡單的拖拽效果的具體代碼,供大家參考,具體內(nèi)容如下
1.拖拽的基本效果
思路:
鼠標在盒子上按下時,準備移動 (事件加給物體)
鼠標移動時,盒子跟隨鼠標移動 (事件添加給頁面)
鼠標抬起時,盒子停止移動 (事件加給頁面)
var o = document.querySelector('div'); //鼠標按下 o.onmousedown = function (e) { //鼠標相對于盒子的位置 var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //鼠標移動 document.onmousemove = function (e) { o.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; } //鼠標抬起 document.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; } }
2.拖拽的問題
若盒子中出現(xiàn)了文字,或盒子自身為圖片,由于瀏覽器的默認行為(文字和圖片本身就可以拖拽),我們可以設(shè)置return false來阻止它的默認行為,但這種攔截默認行為在IE低版本中,不適用,可以使用全局捕獲來解決IE的問題。
全局捕獲
全局捕獲僅適用于IE低版本瀏覽器。
<button>btn1</button> <button>btn2</button> <script> var bts = document.querySelectorAll('button') bts[0].onclick = function () { console.log(1); } bts[1].onclick = function () { console.log(2); } // bts[0].setCapture() //添加全局捕獲 // bts[0].releaseCapture() ;//釋放全局捕獲 </script>
一旦為指定節(jié)點添加全局捕獲,則頁面中其它元素就不會觸發(fā)同類型事件。
3.完整版的拖拽
var o = document.querySelector('div'); //鼠標按下 o.onmousedown = function (e) { if (o.setCapture) { //IE低版本 o.setCapture() } e = e || window.event //鼠標相對于盒子的位置 var offsetX = e.clientX - o.offsetLeft; var offsetY = e.clientY - o.offsetTop; //鼠標移動 document.onmousemove = function (e) { e = e || window.event o.style.left = e.clientX - offsetX + "px"; o.style.top = e.clientY - offsetY + "px"; } //鼠標抬起 document.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; if (o.releaseCapture) { o.releaseCapture();//釋放全局捕獲 } } return false;//標準瀏覽器的默認行為 }
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Javascript類型轉(zhuǎn)換的規(guī)則實例解析
這篇文章主要介紹了Javascript類型轉(zhuǎn)換的規(guī)則實例解析,涉及到j(luò)avascript類型轉(zhuǎn)換相關(guān)知識,對本文感興趣的朋友一起學習吧2016-02-02js采用concat和sort將N個數(shù)組拼接起來的方法
這篇文章主要介紹了js采用concat和sort將N個數(shù)組拼接起來的方法,涉及JavaScript針對數(shù)組的合并與排序操作相關(guān)技巧,需要的朋友可以參考下2016-01-01bootstrap學習使用(導(dǎo)航條、下拉菜單、輪播、柵格布局等)
這篇文章主要為大家詳細介紹了bootstrap框架、導(dǎo)航條、下拉菜單、輪播廣告carousel、柵格系統(tǒng)布局、標簽頁tabs等相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12echarts如何實現(xiàn)動態(tài)曲線圖(多條曲線)
這篇文章主要介紹了echarts如何實現(xiàn)動態(tài)曲線圖(多條曲線),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07JavaScript強制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換操作示例
這篇文章主要介紹了JavaScript強制類型轉(zhuǎn)換和隱式類型轉(zhuǎn)換操作,結(jié)合實例形式分析了javascript字符串、數(shù)字等顯示類型轉(zhuǎn)換,以及運算、判斷等情況下的隱式類型轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2019-05-05javascript ES6 Template String模板字符串使用方法
這篇文章主要介紹了javascript ES6 模板字符串(Template String)是增強版的字符串,用反引號(`)標識,它可以當作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量,需要的朋友可以參考下2023-06-06