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
- JavaScript左右拖動滑動的按鈕效果JavaScript
- javascript div元素滑鼠拖動效果詳解JavaScript
- jQuery Validate限定輸入數字大小的範圍jQuery
- 【警惕】強化關聯更新時where子句範圍限定意識
- elementui 當表格有固定列,拖動條在固定列的範圍內時拖拽不動UI
- 【EXPDP】使用expdp的QUERY引數限定備份資料的範圍
- JavaScript變數 沒有塊範圍JavaScript變數
- 動態範圍控制原理
- jquery div層拖動效果封裝jQuery封裝
- JavaScript基礎 —— DOM:遍歷 與 範圍JavaScript
- Javascript解析之this代表物件及作用範圍JavaScript物件
- flutter上拉抽屜效果,flutter拖動抽屜效果Flutter
- JavaScript 拖動調整元素尺寸JavaScript
- JavaScript拖動div元素詳解JavaScript
- jquery簡單生成指定範圍隨機數效果jQuery隨機
- jQuerydiv元素拖動效果程式碼例項jQuery
- 移動端觸屏拖動頁面滾動效果
- Javascript中變數範圍和hoist現象JavaScript變數
- JavaScript拖動調整元素的尺寸JavaScript
- JavaScript拖動滑鼠繪製矩形方框JavaScript
- JavaScript滑鼠拖動調整div大小JavaScript
- JavaScript有虛線框的拖動JavaScript
- js滑鼠拖動立方體3D運動效果JS3D
- 移動端div塊拖動效果程式碼例項
- JavaScript抖動效果JavaScript
- javascript如何設定嚴格模式的作用範圍JavaScript模式
- 拖動滾動條實現內容自動載入效果
- 拖動滾動條實現側欄導航定位效果
- js拖動實現左右圖片對比效果JS
- Qt實現遮罩效果並可以拖動伸縮QT遮罩
- 公司公司程式碼業務範圍成本控制範圍概念
- JavaScript元素抖動效果JavaScript