標籤:改變 head meta fse client nbsp The htm 寬度
滑鼠拖拽事件:
- 滑鼠按下事件;
- 滑鼠移動事件;
- 滑鼠抬起事件。
- 移動前移動後滑鼠在元素上的相對位置不發生改變,所以要記錄滑鼠在元素上的位置。
在移動的時候需要記錄元素的位移數
最後需要判斷邊界,當元素到達邊界時就不能再移動了
最後需要 把屬性重新設定一下,否則元素不能被拖拽。
<html> <head> <meta charset="utf-8" /> <title></title> <style> *{ margin:0; padding:0; } div{ width:100px; height:100px; background:red; position:absolute; /* 對元素進行定位*/ left:0; top:0; } </style> </head> <body> <div></div> </body> <script> var oDiv = document.getElementsByTagName(‘div‘)[0] var body = document.getElementsByTagName(‘body‘)[0] // 計算最大位移距離(後期判斷邊界時要用到) oDiv.offsetWidth:表示div的寬度 var maxLeft = window.innerWidth - oDiv.offsetWidth var maxTop = window.innerHeight - oDiv.offsetHeight // 滑鼠按下事件 oDiv.onmousedown = function (e) { var ev = e || event //記錄滑鼠在元素上的位置 var posX = ev.clientX-oDiv.offsetLeft var posY = ev.clientY-oDiv.offsetTop //滑鼠移動事件 body.onmousemove = function(e){ var ev = e || event //計算元素的位移 var left = ev.clientX-posX var top = ev.clientY-posY //判斷邊界 if (left<0){ left=0 }else if (left>maxLeft){ left=maxLeft } if (top<0){ top=0 }else if(top>maxTop){ top=maxTop } //重新設定屬性 oDiv.style.left = left + "px" oDiv.style.top = top + "px" } //滑鼠抬起事件 body.onmouseup = function(){ body.onmousemove = null body.onmouseup = null } } </script></html>
滑鼠拖拽事件