js實現(xiàn)簡單的拖拽效果
本文實例為大家分享了js實現(xiàn)簡單的拖拽效果的具體代碼,供大家參考,具體內(nèi)容如下
1.拖拽的基本效果
思路:
鼠標(biāo)在盒子上按下時,準備移動 (事件加給物體)
鼠標(biāo)移動時,盒子跟隨鼠標(biāo)移動 (事件添加給頁面)
鼠標(biāo)抬起時,盒子停止移動 (事件加給頁面)
var o = document.querySelector('div');
//鼠標(biāo)按下
o.onmousedown = function (e) {
//鼠標(biāo)相對于盒子的位置
var offsetX = e.clientX - o.offsetLeft;
var offsetY = e.clientY - o.offsetTop;
//鼠標(biāo)移動
document.onmousemove = function (e) {
o.style.left = e.clientX - offsetX + "px";
o.style.top = e.clientY - offsetY + "px";
}
//鼠標(biāo)抬起
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');
//鼠標(biāo)按下
o.onmousedown = function (e) {
if (o.setCapture) { //IE低版本
o.setCapture()
}
e = e || window.event
//鼠標(biāo)相對于盒子的位置
var offsetX = e.clientX - o.offsetLeft;
var offsetY = e.clientY - o.offsetTop;
//鼠標(biāo)移動
document.onmousemove = function (e) {
e = e || window.event
o.style.left = e.clientX - offsetX + "px";
o.style.top = e.clientY - offsetY + "px";
}
//鼠標(biāo)抬起
document.onmouseup = function () {
document.onmousemove = null;
document.onmouseup = null;
if (o.releaseCapture) {
o.releaseCapture();//釋放全局捕獲
}
}
return false;//標(biāo)準瀏覽器的默認行為
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
利用函數(shù)的惰性載入提高javascript代碼執(zhí)行效率
在 addEvent 函數(shù)每次調(diào)用的時候都要走一遍,如果瀏覽器支持其中的一種方法,那么他就會一直支持了,就沒有必要再進行其他分支的檢測了2014-05-05
JS字節(jié)數(shù)組轉(zhuǎn)數(shù)字及數(shù)字轉(zhuǎn)字節(jié)數(shù)組的方法
本文將深入解析長整數(shù)與字節(jié)數(shù)組互轉(zhuǎn)的技術(shù)原理,提供ES6(現(xiàn)代瀏覽器/Node.js)與ES5(兼容舊環(huán)境)兩套實現(xiàn)方案,感興趣的朋友一起看看吧2025-04-04
js從10種顏色中隨機取色實現(xiàn)每次取出不同的顏色
昨天在做js 從10種顏色中隨機取色,并每次取出的顏色不同,具體的實現(xiàn)思路如下,感興趣的朋友可以參考下2013-10-10
JS 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法
下面小編就為大家?guī)硪黄狫S 在數(shù)組指定位置插入/刪除數(shù)據(jù)的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
js隱藏與顯示回到頂部按鈕及window.onscroll事件應(yīng)用
現(xiàn)在大多數(shù)網(wǎng)站都會添加這種功能:當(dāng)滾動條滾動到頁面的下方時,頁面的右下角會顯示出來一個“回到頂部”的按鈕或連接;那么,如何控制“回到頂部”按鈕的顯示或隱藏呢;本文介紹詳細實現(xiàn)方法,感興趣的你可不要走開哦2013-01-01

