主にネイティブ JS を使用して Cookie をカプセル化し、ドラッグ アンド ドロップに 3 つのイベント、つまり onmousedown、onmousemove、onmouseup、 の 3 つのイベントのうち 2 つを使用します。イベント オブジェクト、つまりイベントです。イベント オブジェクトは互換性がないため、互換性の問題に対処する必要があります。つまり、イベント オブジェクトを通じて、マウスがクリックした時点のポイントを取得します。画面上でドラッグしたオブジェクトの左側から距離を引くと、現在のクリック位置からオブジェクトまでの距離が得られます。
最後に、主に上位バージョンのブラウザでテキストが選択されないようにするために、onmouseup 中に false が返されました。 Cookie 内の addCookie メソッドによって、オブジェクトのドラッグが停止したときの位置が Cookie に保存され、ページが読み込まれるときに 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 のドラッグ アンド ドロップ効果と Cookie の作成およびパスの保存を組み合わせたもので、皆さんの学習のきっかけになれば幸いです。