原生js配合cookie制作保存路徑的拖拽
主要是運(yùn)用了原生js封裝了一個cookie,然后使用了三個事件做拖拽,分別是onmousedown,onmousemove,onmouseup,這三個事件其中兩個需要添加事件對象,也就是event,事件對象是一個不兼容的東西,所以需要處理兼容性的問題,也就是oEvent = ev || event; 通過事件對象,獲取鼠標(biāo)點(diǎn)擊屏幕時的那個點(diǎn),然后減去被拖拽物體距離左邊的一個距離,最終就可以獲取到當(dāng)前點(diǎn)擊位置距離物體的距離。
最后在onmouseup的時候做了一個return false,主要是為了阻止在高版本瀏覽器下選中文字。通過cookie里面的addCookie方法,把物體拖動停止時的位置存在了cookie里面,然后在頁面加載的時候就調(diào)用getCookie方法,取到物體所在的位置,也就做了一個用cookie存位置的拖拽。
如有下邊的html:
<div id="drag">拖動我</div>
CSS:
#drag{width: 100px; height: 100px; background: red; position: absolute; top: 0; left: 0;cursor:move;}
使用用js實(shí)現(xiàn)拖動的代碼如下:
function addCookie(name, value, iDay) { var oDate = new Date(); oDate.setDate(oDate.getDate() + iDay); document.cookie = name + '=' + value + '; path=/; expires=' + oDate; } function getCookie(name) { var arr = document.cookie.split('; '); for (var i = 0; i < arr.length; i++) { var arr2 = arr[i].split('='); return (arr2[0] == name) && arr2[1] } return ''; } window.onload = function () { var oDiv = document.getElementById('drag'); drag(oDiv); var move_by = getCookie('move_cood'); if (move_by) { var str = eval('(' + move_by + ')'); oDiv.style.left = str[0] + 'px'; oDiv.style.top = str[1] + 'px'; } function drag(obj) { obj.onmousedown = function (ev) { var oEvent = ev || event; var disX = oEvent.clientX - obj.offsetLeft, disY = oEvent.clientY - obj.offsetTop; document.onmousemove = function (ev) { var oEvent = ev || event; obj.style.left = oEvent.clientX - disX + 'px'; obj.style.top = oEvent.clientY - disY + 'px'; }; document.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; obj.releaseCapture && obj.releaseCapture(); addCookie('move_cood', '[' + obj.offsetLeft + ',' + obj.offsetTop + ']', 10); }; obj.setCapture && obj.setCapture(); return false; }; } };
以上就是原生js配合cookie制作保存路徑的拖拽實(shí)現(xiàn)效果,希望對大家的學(xué)習(xí)有所啟發(fā)。
- javascript設(shè)置和獲取cookie的方法實(shí)例詳解
- js操作cookie保存瀏覽記錄的方法
- jquery.cookie.js用法實(shí)例詳解
- JS封裝cookie操作函數(shù)實(shí)例(設(shè)置、讀取、刪除)
- JS使用cookie實(shí)現(xiàn)DIV提示框只顯示一次的方法
- 通過Jquery.cookie.js實(shí)現(xiàn)展示瀏覽網(wǎng)頁的歷史記錄超管用
- JS利用cookie記憶當(dāng)前位置的防刷新導(dǎo)航效果
- JS基于cookie實(shí)現(xiàn)來賓統(tǒng)計(jì)記錄訪客信息的方法
- 詳談javascript中的cookie
- js簡單設(shè)置與使用cookie的方法
相關(guān)文章
JavaScript模塊管理的簡單實(shí)現(xiàn)方式詳解
這篇文章主要介紹了JavaScript模塊管理的簡單實(shí)現(xiàn)方式,它方便組織你的代碼,提高項(xiàng)目的可維護(hù)性。一個項(xiàng)目的可維護(hù)性高不高,也體現(xiàn)一個程序員的水平,在如今越來越復(fù)雜的前端項(xiàng)目,這一點(diǎn)尤為重要。,需要的朋友可以參考下2019-06-06淺談js中StringBuffer類的實(shí)現(xiàn)方法及使用
下面小編就為大家?guī)硪黄獪\談js中StringBuffer類的實(shí)現(xiàn)方法及使用。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09原生JavaScript實(shí)現(xiàn)異步多文件上傳
這篇文章主要介紹了原生JavaScript實(shí)現(xiàn)異步多文件上傳,感興趣的小伙伴們可以參考一下2015-12-12JS實(shí)現(xiàn)把一個頁面層數(shù)據(jù)傳遞到另一個頁面的兩種方式
這篇文章主要介紹了JS實(shí)現(xiàn)把一個頁面層數(shù)據(jù)傳遞到另一個頁面的方式,本文給大家提供了兩種方式,需要的朋友可以參考下2018-08-08