ホームページ  >  記事  >  ウェブフロントエンド  >  ネイティブ js と cookie を組み合わせて、保存パスのドラッグ アンド ドロップを作成する_javascript スキル

ネイティブ js と cookie を組み合わせて、保存パスのドラッグ アンド ドロップを作成する_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 15:22:521517ブラウズ

主にネイティブ 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 の作成およびパスの保存を組み合わせたもので、皆さんの学習のきっかけになれば幸いです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。