JavaScript 限定範圍拖動效果
本章節分享一段拖動程式碼例項,它能夠將拖動的範圍限定為當前瀏覽器客戶區。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> * { margin: 0; padding: 0; } #box { position: absolute; left: 0; top: 0; width: 100px; height: 100px; background: #f60; } </style> <script type="text/javascript"> window.onload = function () { var oBox = document.getElementById('box'); oBox.onmousedown = function (e) { var oEvent = e || window.event, disL = oEvent.clientX - oBox.offsetLeft, disT = oEvent.clientY - oBox.offsetTop, maxL = document.documentElement.clientWidth - oBox.offsetWidth, maxT = document.documentElement.clientHeight - oBox.offsetHeight; document.onmousemove = function (e) { var oEvent = e || window.event, disX = oEvent.clientX - disL, disY = oEvent.clientY - disT; //console.log(disX); if (disX <= 0) { disX = 0 } if (disY <= 0) { disY = 0 } if (disX >= maxL) { disX = maxL } if (disY >= maxT) { disY = maxT } oBox.style.left = disX + 'px'; oBox.style.top = disY + 'px'; } } document.onmouseup = function () { document.onmousemove = null; } } </script> </head> <body> <div id="box"></div> </body> </html>
上面的程式碼實現了我們的要求,下面就介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload = function () {},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var oBox = document.getElementById('box'),獲取id屬性值為box的元素物件。
(3).oBox.onmousedown = function (e) {},為元素註冊onmousedown註冊事件處理函式。
(4).var oEvent = e || window.event,實現事件物件的相容效果。
(5).disL = oEvent.clientX - oBox.offsetLeft,滑鼠在客戶區的座標減去OBox距離body左側的距離,其實也就是獲取滑鼠距離OBox元素左側的距離。(6).maxL = document.documentElement.clientWidth - oBox.offsetWidth,獲取OBox元素的最大left值。
(7).document.onmousemove = function (e) {},註冊onmousemove事件處理函式,之所以註冊document上,是利用了事件冒泡效果,同時也防止了滑鼠移出OBox元素,導致拖動失效現象。
(8).disX = oEvent.clientX - disL,獲取OBox元素的left值。
(9).disY = oEvent.clientY - disT,獲取OBox元素的top值。
(10).if (disX <= 0) { disX = 0 }
if (disY <= 0) { disY = 0 }
if (disX >= maxL) { disX = maxL }
if (disY >= maxT) { disY = maxT }
上面的程式碼實現了拖動範圍限定效果。
(11).document.onmouseup = function () {
document.onmousemove = null;
},當鬆開滑鼠按鍵的時候,解綁onmousemove事件處理函式。
二.相關閱讀:
(1).var oEvent = e || window.event參閱var ev=window.event||ev 一章節。
(2).clientX參閱JavaScript event.clientX一章節。
(3).offsetLeft參閱JavaScript offsetleft一章節。
(4).offsetWidth參閱JavaScript offsetWidth一章節。
(5).onmousemove事件參閱JavaScript mousemove事件一章節。
相關文章
- JavaScript 限定範圍的拖拽效果JavaScript
- div拖動範圍限定在指定元素內
- JavaScript 拖拽限定範圍JavaScript
- JavaScript表格tr行左右拖動效果JavaScript
- Elasticsearch聚合學習之三:範圍限定Elasticsearch
- jQuery Validate限定輸入數字大小的範圍jQuery
- elementui 當表格有固定列,拖動條在固定列的範圍內時拖拽不動UI
- flutter上拉抽屜效果,flutter拖動抽屜效果Flutter
- JavaScript 拖動調整元素尺寸JavaScript
- 動態範圍控制原理
- JavaScript基礎 —— DOM:遍歷 與 範圍JavaScript
- 自定義實現MIUI的拖動視差效果(阻尼效果)UI
- JavaScript拖動調整元素的尺寸JavaScript
- JavaScript滑鼠拖動調整div大小JavaScript
- JavaScript拖動滑鼠繪製矩形方框JavaScript
- Qt實現遮罩效果並可以拖動伸縮QT遮罩
- JavaScript元素抖動效果JavaScript
- JavaScript 視窗抖動效果JavaScript
- JavaScript 簡單動畫效果JavaScript動畫
- 範圍分割槽
- 軟考——範圍
- 隨機範圍小數和隨機範圍整數隨機
- javascript對點選事件和拖動事件的區分JavaScript事件
- JavaScript簡單的動畫效果JavaScript動畫
- 演算法-機器人的運動範圍演算法機器人
- JZ-066-機器人的運動範圍機器人
- 短效動態代理ip的使用範圍有哪些
- SciPy 應用範圍
- 檢視分割槽範圍
- 保護範圍和物件物件
- 資料型別範圍資料型別
- python - 生成時間範圍Python
- int/double資料範圍
- PFMEA如何定義範圍?
- Blender修改視野範圍
- angular 拖動功能Angular
- GSMA:通過改善移動覆蓋範圍推動數字革命
- 11 個最好的 JavaScript 動態效果庫JavaScript