JS 拖拽元素

還是先上個圖:

簡單來講:我們現在要做的就是將黃色方塊固定,然後可以用鼠標隨意拖拽紅色方塊

 再看需求:

1.當鼠標在被拖拽元素上按下時,開始拖拽  onmousedown
2.當鼠標移動時被拖拽元素跟隨鼠標移動 onmousemove
3.當鼠標鬆開時,被拖拽元素固定在當前位置  onmouseup

HTML代碼:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>鼠標拖拽元素</title>
  <link rel="stylesheet" href="drag.css">
  <script src="drag.js"></script>
</head>
<body>
  <div class="box1" id="box1"></div>
  <div class="box2"></div>
</body>
</html>

 JS代碼:

/**
 * Created by Barry on 2019-2-9.
 */
window.onload = function () {
  var box1 = document.getElementById('box1');

  /* 鼠標按下 */
  box1.onmousedown = function(event) {
    /* 拿到鼠標在box1的x,y */
    event = event || window.event;
    var x = event.offsetX;
    var y = event.offsetY;

    /* 鼠標開始拖拽,綁定事件,改變box1x,y */
    document.onmousemove = function(event){
      event = event || window.event;
      box1.style.top = event.clientY-y + 'px';
      box1.style.left = event.clientX-x + 'px';
    };

    /* 鼠標擡起,解綁事件 */
    document.onmouseup = function () {
      document.onmousemove = null;
      document.onmouseup = null;
    }
  }
};

CSS代碼,可以注意的是絕對定位:


.box1{
  width: 100px;
  height: 100px;
  background-color: red;

  /* 絕對定位 - 必須! */
  position: absolute;
}

.box2{
  width: 100px;
  height: 100px;
  background-color: yellow;

  /* 絕對定位 - 必須! */
  position: absolute;

  left: 200px;
  top: 200px;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章