javascript div元素滑鼠拖動效果詳解
任何複雜的功能都是由一個個簡單的功能疊加而成,本章節就詳細介紹一下如何實現利用滑鼠拖動div元素運動效果。
並且能夠實現限制div元素拖動的範圍,需要的朋友可以做一下參考。
程式碼例項:
[HTML] 純文字檢視 複製程式碼<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <style type="text/css"> #antzone{ width:100px; height:100px; background:red; position:absolute } </style> <script type="text/javascript"> window.onload=function(){ var oDiv=document.getElementById("antzone"); var x=0; var y=0; oDiv.onmousedown=function(ev){ var oEvent=ev||event; //滑鼠的橫座標減去div的offsetLeft x=oEvent.clientX-oDiv.offsetLeft; //滑鼠的縱座標減去div的offsetTop y=oEvent.clientY-oDiv.offsetTop; document.onmousemove=function(ev){ var oEvent=ev||event; var left=oEvent.clientX-x; var right=oEvent.clientY-y; //判斷左邊是否過界 if(left<0){ left=0; } //判斷右邊是否過界 else if(left>document.documentElement.clientWidth-oDiv.offsetWidth){ left=document.documentElement.clientWidth-oDiv.offsetWidth; } //判斷上邊是否過界 if(right<0){ right=0; } //判斷下邊是否過界 else if(right>document.documentElement.clientHeight){ right=document.documentElement.clientHeight-oDiv.offsetHeight; } oDiv.style.left=left+"px"; oDiv.style.top=right+"px"; } document.onmouseup=function(){ //清空document的事件 document.onmousemove=null; document.onmouseup=null; } } } </script> </head> <body> <div id="antzone"></div> </body> </html>
上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。
一.程式碼註釋:
(1).window.onload=function(){},當文件內容完全載入完畢再去執行函式中的程式碼。
(2).var oDiv=document.getElementById("antzone"),獲取元素物件。
(3).var x=0,宣告一個變數x,並賦值為0。
(4).var y=0,宣告一個變數y,並賦值為0。
(5).oDiv.onmousedown=function(ev){},為div元素註冊onmousedown事件處理函式。
(6).var oEvent=ev||event,獲取相容所有主流瀏覽器的事件物件。
(7).x=oEvent.clientX-oDiv.offsetLeft,獲取當按下滑鼠鍵的時候,滑鼠指標所在位置距離div元素左側的距離。
(8).y=oEvent.clientY-oDiv.offsetTop,獲取當按下滑鼠鍵的時候,滑鼠指標所在位置距離div元素上側的距離。
(9).document.onmousemove=function(ev){},為文件註冊onmousemove事件處理函式,之所以註冊在文件上是為了防止,滑鼠離開div範圍,導致拖動無效的情況。
(10).var oEvent=ev||event,獲取相容所有瀏覽器的事件物件。
(11).var left=oEvent.clientX-x,計算出拖動時div元素左側距離瀏覽器客戶區左側的距離。
(12).var right=oEvent.clientY-y,計算出拖動時div元素上不距離瀏覽器客戶區上冊的距離。
(13).if(left<0){
left=0;
},判斷是否小於0,如果小於0就設定為0,防止拖動超出瀏覽器客戶區左側。
(14).else if(left>document.documentElement.clientWidth-oDiv.offsetWidth){
left=document.documentElement.clientWidth-oDiv.offsetWidth;
},這個是為了防止超出瀏覽器客戶區右側。
(15).document.onmouseup=function(){
//清空document的事件
document.onmousemove=null;
document.onmouseup=null;
},解綁事件處理函式。
二.相關閱讀:
(1).onmousedown時間可以參閱javascript mousedown事件一章節。
(2).var oEvent=ev||event可以參閱var ev=window.event||ev的作用是什麼一章節。
(3).clientX可以參閱javascript clientX一章節。
(4).offsetLeft可以參閱js offsetLeft一章節。
(5).clientWidth可以參閱clientWidth一章節。
(6).offsetWidth可以參閱js offsetWidth一章節。
相關文章
- JavaScript滑鼠拖動調整div大小JavaScript
- JavaScript 拖動調整元素尺寸JavaScript
- div拖動範圍限定在指定元素內
- JavaScript拖動滑鼠繪製矩形方框JavaScript
- JavaScript 限定範圍拖動效果JavaScript
- JavaScript拖動調整元素的尺寸JavaScript
- JavaScript元素抖動效果JavaScript
- JavaScript表格tr行左右拖動效果JavaScript
- JavaScript動態新增和刪除div元素JavaScript
- CSS div水平垂直居中效果詳解CSS
- JavaScript 動態進度條效果詳解JavaScript
- JavaScript自動更新時間效果詳解JavaScript
- jQuery滑鼠懸浮翻牌效果詳解jQuery
- jQuery滑鼠懸浮聚焦效果詳解jQuery
- HTML元素拖動JSHTMLJS
- JavaScript動態圓形鐘錶效果詳解JavaScript
- JavaScript 打字機效果詳解JavaScript
- JavaScript 秒錶效果詳解JavaScript
- JavaScript抽獎效果詳解JavaScript
- 滑鼠懸浮div實現旋轉效果
- JavaScript跟隨滑鼠移動的圖片效果JavaScript
- JavaScript隨滑鼠晃動的div塊程式碼例項JavaScript
- div拖動遇到iframe卡頓的問題解決
- win10滑鼠拖不動怎麼處理_win10滑鼠無法拖動檔案的解決方法Win10
- CSS3滑鼠懸浮div旋轉效果CSSS3
- 滑鼠劃過星級評分效果詳解
- JavaScript 雪花飄舞效果詳解JavaScript
- JavaScript省市級聯效果詳解JavaScript
- 探討把一個元素從它所在的div 拖動到另一個div內的實現方法
- CSS3滑鼠懸浮元素放大效果CSSS3
- JavaScript動畫方式控制div元素的隱藏和顯示JavaScript動畫
- JavaScript彈幕效果程式碼詳解JavaScript
- JavaScript數字分頁效果詳解JavaScript
- js拖動調整元素寬度JS
- win10系統下滑鼠不能拖動的解決方法Win10
- JavaScript元素拖拽路徑回放效果JavaScript
- 滑鼠懸浮小圖彈出大圖效果詳解
- JavaScript焦點圖輪播效果詳解JavaScript
- flutter上拉抽屜效果,flutter拖動抽屜效果Flutter