91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用js實現限定范圍拖拽的方法

發布時間:2020-10-27 14:19:04 來源:億速云 閱讀:329 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關使用js實現限定范圍拖拽的方法,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

代碼實例

* {
 padding: 0;
 margin: 0;
}
#box1 {
 width: 500px;
 height: 500px;
 background: #999;
 position: relative;
 left: 100px;
 top: 100px;
}
#box {
 width: 100px;
 height: 100px;
 background: #334;
 position: absolute;
 cursor: move;
}

<div id="box1">
<div id="box"></div>
</div>

(function () {
 var dragging = false
 var boxX, boxY, mouseX, mouseY, offsetX, offsetY
 var box = document.getElementById('box')
 var box1 = document.getElementById('box1')

 // 鼠標按下的動作
 box.onmousedown = down
 // 鼠標的移動動作
 document.onmousemove = move
 // 釋放鼠標的動作
 document.onmouseup = up

 // 鼠標按下后的函數,e為事件對象
 function down(e) {
  dragging = true

  // 獲取元素所在的坐標
  boxX = box.offsetLeft
  boxY = box.offsetTop

  // 獲取鼠標所在的坐標
  mouseX = parseInt(getMouseXY(e).x)
  mouseY = parseInt(getMouseXY(e).y)

  // 鼠標相對元素左和上邊緣的坐標
  offsetX = mouseX - boxX
  offsetY = mouseY - boxY
 }

 // 鼠標移動調用的函數
 function move(e){
  if (dragging) {
   // 獲取移動后的元素的坐標
   var x = getMouseXY(e).x - offsetX
   var y = getMouseXY(e).y - offsetY

   // 計算可移動位置的大小, 保證元素不會超過可移動范圍
   // 此處就是父元素的寬度減去子元素寬度
   var width = box1.clientWidth - box.offsetWidth
   var height = box1.clientHeight - box.offsetHeight

   // min方法保證不會超過右邊界,max保證不會超過左邊界
   x = Math.min(Math.max(0, x), width)
   y = Math.min(Math.max(0, y), height)

   // 給元素及時定位
   box.style.left = x + 'px'
   box.style.top = y + 'px'
  }
 }

 // 釋放鼠標的函數
 function up(e){
  dragging = false
 }

 // 函數用于獲取鼠標的位置
 function getMouseXY(e){
  var x = 0, y = 0
  e = e || window.event

  if (e.pageX) {
   x = e.pageX
   y = e.pageY
  } else {
   x = e.clientX + document.body.scrollLeft - document.body.clientLeft
   y = e.clientY + document.body.scrollTop - document.body.clientTop
  }
  return {
   x: x,
   y: y
  }
 }
})()

與簡易拖拽的差異

簡易拖拽的鏈接

可移動位置的改變

// 此處就是父元素的寬度減去子元素寬度
var width = box1.clientWidth - box.offsetWidth
var height = box1.clientHeight - box.offsetHeight

看完上述內容,你們對使用js實現限定范圍拖拽的方法有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

龙陵县| 固安县| 乃东县| 汉阴县| 绥江县| 固原市| 阿图什市| 阳曲县| 毕节市| 岗巴县| 眉山市| 韶关市| 泰安市| 舒兰市| 白朗县| 武义县| 刚察县| 龙南县| 玛多县| 望江县| 剑河县| 涿鹿县| 卢氏县| 深泽县| 淄博市| 荣昌县| 互助| 江永县| 奎屯市| 灯塔市| 寿光市| 呼图壁县| 柳林县| 承德市| 张掖市| 景宁| 和政县| 册亨县| 姜堰市| 文安县| 柏乡县|