주로 네이티브 js를 사용하여 쿠키를 캡슐화한 다음 드래그 앤 드롭을 위해 세 가지 이벤트, 즉 onmousedown, onmousemove, onmouseup, 이 세 가지 이벤트 중 두 가지를 추가해야 합니다. 이벤트 객체, 즉 이벤트입니다. 이벤트 객체는 호환되지 않는 것이므로 호환성 문제를 처리해야 합니다. 즉, oEvent = ev || 화면에서 드래그한 개체의 왼쪽에서 거리를 빼면 마지막으로 현재 클릭 위치에서 개체까지의 거리를 얻을 수 있습니다.
마지막으로 상위 버전 브라우저에서 텍스트가 선택되는 것을 방지하기 위해 onmouseup 중에 false 반환이 이루어졌습니다. 쿠키의 addCookie 메소드를 통해 객체가 드래그되어 정지된 위치를 쿠키에 저장한 후 페이지가 로드되면 getCookie 메소드를 호출하여 객체의 위치를 가져오고, 이를 이용한 드래그 앤 드롭이 가능합니다. 위치를 저장하는 쿠키가 생성됩니다.
다음 html이 있는 경우:
<div id="drag">拖动我</div>
CSS:
#drag{width: 100px; height: 100px; background: red; position: absolute; top: 0; left: 0;cursor:move;}
js를 이용하여 드래그하는 코드는 다음과 같습니다.
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의 드래그 앤 드롭 효과로 모든 사람의 학습에 영감을 주기를 바랍니다.