原生js拖拽(第一課 未兼容)拖拽思路
更新時(shí)間:2013年03月29日 15:37:29 作者:
第一步點(diǎn)擊需要拖動(dòng)的元素,在點(diǎn)擊下的元素被選中,進(jìn)行move移動(dòng),當(dāng)鼠標(biāo)彈起的時(shí)候,停止動(dòng)作.點(diǎn)擊元素oDIV的時(shí)候,可用的是oDIV區(qū)域,而move和up則是全局區(qū)域
復(fù)制代碼 代碼如下:
/*
拖拽流程:
1、第一步點(diǎn)擊需要拖動(dòng)的元素
2、在點(diǎn)擊下的元素被選中,進(jìn)行move移動(dòng)
3、當(dāng)鼠標(biāo)彈起的時(shí)候,停止動(dòng)作
4、點(diǎn)擊元素oDIV的時(shí)候,可用的是oDIV區(qū)域,而move和up則是全局區(qū)域,也就是整個(gè)文檔通用,即應(yīng)該用document
*/
oDIV = document.getElementById("gaga");
oDIV.onmousedown = function( e ){ // 當(dāng)鼠標(biāo)點(diǎn)擊下去的時(shí)候
var diffX = e.clientX - oDIV.offsetLeft; // 點(diǎn)擊的位置距離瀏覽器最左邊的位置(clientX) 再減去被點(diǎn)擊元素距離最左邊的位置(oDIV.offetLeft) 在引動(dòng)的所點(diǎn)擊的元素距離最左邊的位置是不確定的 所以需要這個(gè)結(jié)果
var diffY = e.clientY - oDIV.offsetTop; // 點(diǎn)擊的位置距離瀏覽器頂部的位置(clientY) 再減去被點(diǎn)擊元素距離頂部的位置(oDIV.offsetTop) 在引動(dòng)的所點(diǎn)擊的元素距離頂部的位置是不確定的 所以需要這個(gè)結(jié)果
document.onmousemove = function( e ){ // 當(dāng)按下鼠標(biāo)不放的時(shí)候
var e = e || window.event;
oDIV.style.top = e.clientY - diffY + "px";
oDIV.style.left = e.clientX - diffX + "px";
};
document.onmouseup = function(){ // 當(dāng)鼠標(biāo)彈起的時(shí)候
document.onmousemove = null; // 清空鼠標(biāo)按下鼠標(biāo)不放的事件
document.onmouseup = null; // 清空鼠標(biāo)彈起事件
}
};
相關(guān)文章
JavaScript中Cookie的使用之如何設(shè)置失效時(shí)間
這篇文章主要介紹了JavaScript中Cookie的使用之如何設(shè)置失效時(shí)間問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2022-12-12
showModalDialog 和 showModelessDialog
showModalDialog 和 showModelessDialog...2007-01-01
JS實(shí)現(xiàn)的數(shù)組全排列輸出算法
這篇文章主要介紹了JS實(shí)現(xiàn)的數(shù)組全排列輸出算法,實(shí)例分析了全排列的原理與相關(guān)的javascript實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-03-03
JS實(shí)現(xiàn)靜止元素自動(dòng)移動(dòng)示例
這篇文章主要介紹了JS實(shí)現(xiàn)靜止元素自動(dòng)移動(dòng)的具體實(shí)現(xiàn),需要的朋友可以參考下2014-04-04
如何通過JavaScript來實(shí)現(xiàn)頁面間數(shù)據(jù)傳遞
這篇文章主要給大家介紹了關(guān)于如何通過JavaScript來實(shí)現(xiàn)頁面間數(shù)據(jù)傳遞的相關(guān)資料,在前端開發(fā)中我們常常需要從一個(gè)跳到另一個(gè)頁面,并且將當(dāng)前頁面的數(shù)據(jù)傳遞過去,需要的朋友可以參考下2023-11-11

