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