国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS鼠標拖拽實例分析

2019-11-20 11:11:37
字體:
來源:轉載
供稿:網友

本文實例講述了JS鼠標拖拽實現方法。分享給大家供大家參考,具體如下:

JS代碼:

<script>window.onload=function(){  var oDiv=document.getElementById('div');  var disX=0;  var disY=0;  oDiv.onmousedown=function(ev) //鼠標按下DIV  {    var oEvent=ev||event;    disX=oEvent.clientX-oDiv.offsetLeft; //鼠標的X坐標減去DIV的左邊距就等于disX, 這個disXs是用于確定鼠標移動DIV時鼠標點和DIV之間的左面距離,這個距離是不會變的,通過這個新鼠標的X坐標減去disX就是DIV的Left    disY=oEvent.clientY-oDiv.offsetTop; //鼠標的Y坐標減去DIV的左邊距就等于disY, 這個disY是用于確定鼠標移動DIV時鼠標點和DIV之間的上面距離,這個距離是不會變的,通過這個新鼠標的Y坐標減去disY就是DIV的Top    document.onmousemove=function(ev) //為了防止鼠標移動太快而離開了DIV產生了bug,所以要給整個頁面加onmousemove事件    {      var oEvent=ev||event;      var oLeft=oEvent.clientX-disX; //新鼠標X坐標減去disX,也就是鼠標移動DIV后的Left      var oTop=oEvent.clientY-disY; //新鼠標Y坐標減去disY,也就是鼠標移動DIV后的Top      if(oLeft<0) //當DIV的Left小于0,也就是移出左邊      {        oLeft=0; //就把DIV的Left設置為0,就不能移出左邊      }      else if(oLeft>document.documentElement.clientWidth-oDiv.offsetWidth) //屏幕寬度減去DIV的寬度就得出了DIV到達最右邊的寬度,如果Left大于這個像素      {        oLeft=document.documentElement.clientWidth-oDiv.offsetWidth; //就把Left設置為這個像素      }      if(oTop<0) //當DIV的To小于0,也就是移出左邊      {        oTop=0; //就把DIV的Top設置為0,就不能移出上邊      }      else if(oTop>document.documentElement.clientHeight-oDiv.offsetHeight) //屏幕高度減去DIV的高度就得出了DIV到達最下面邊的像素,如果Top大于這個像素      {        oTop=document.documentElement.clientHeight-oDiv.offsetHeight; //就把Top設置為這個像素      }      oDiv.style.left=oLeft+'px'; //DIV的Left設置為新鼠標X坐標減去disX的值      oDiv.style.top=oTop+'px'; //DIV的Top設置為新鼠標Y坐標減去disY的值    };    document.onmouseup=function() //鼠標松開時    {      document.onmousemove=null; //把鼠標移動清楚      document.onmouseup=null; //把鼠標松開清楚    };    return false; //阻止FireFox的默認事件 bug  };};</script>

完整代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>無標題文檔</title><style>div{width:200px;height:200px;background:black;position:absolute;top:0;left:0;}</style><script>window.onload=function(){  var oDiv=document.getElementById('div');  var disX=0;  var disY=0;  oDiv.onmousedown=function(ev) //鼠標按下DIV  {    var oEvent=ev||event;    disX=oEvent.clientX-oDiv.offsetLeft; //鼠標的X坐標減去DIV的左邊距就等于disX, 這個disXs是用于確定鼠標移動DIV時鼠標點和DIV之間的左面距離,這個距離是不會變的,通過這個新鼠標的X坐標減去disX就是DIV的Left    disY=oEvent.clientY-oDiv.offsetTop; //鼠標的Y坐標減去DIV的左邊距就等于disY, 這個disY是用于確定鼠標移動DIV時鼠標點和DIV之間的上面距離,這個距離是不會變的,通過這個新鼠標的Y坐標減去disY就是DIV的Top    document.onmousemove=function(ev) //為了防止鼠標移動太快而離開了DIV產生了bug,所以要給整個頁面加onmousemove事件    {      var oEvent=ev||event;      var oLeft=oEvent.clientX-disX; //新鼠標X坐標減去disX,也就是鼠標移動DIV后的Left      var oTop=oEvent.clientY-disY; //新鼠標Y坐標減去disY,也就是鼠標移動DIV后的Top      if(oLeft<0) //當DIV的Left小于0,也就是移出左邊      {        oLeft=0; //就把DIV的Left設置為0,就不能移出左邊      }      else if(oLeft>document.documentElement.clientWidth-oDiv.offsetWidth) //屏幕寬度減去DIV的寬度就得出了DIV到達最右邊的寬度,如果Left大于這個像素      {        oLeft=document.documentElement.clientWidth-oDiv.offsetWidth; //就把Left設置為這個像素      }      if(oTop<0) //當DIV的To小于0,也就是移出左邊      {        oTop=0; //就把DIV的Top設置為0,就不能移出上邊      }      else if(oTop>document.documentElement.clientHeight-oDiv.offsetHeight) //屏幕高度減去DIV的高度就得出了DIV到達最下面邊的像素,如果Top大于這個像素      {        oTop=document.documentElement.clientHeight-oDiv.offsetHeight; //就把Top設置為這個像素      }      oDiv.style.left=oLeft+'px'; //DIV的Left設置為新鼠標X坐標減去disX的值      oDiv.style.top=oTop+'px'; //DIV的Top設置為新鼠標Y坐標減去disY的值    };    document.onmouseup=function() //鼠標松開時    {      document.onmousemove=null; //把鼠標移動清楚      document.onmouseup=null; //把鼠標松開清楚    };    return false; //阻止FireFox的默認事件 bug  };};</script></head><body><div id="div"></div></body></html>

希望本文所述對大家JavaScript程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 涪陵区| 黄浦区| 鄂尔多斯市| 右玉县| 孝昌县| 六枝特区| 鄯善县| 苏尼特右旗| 阿尔山市| 邢台县| 滨州市| 宾阳县| 炉霍县| 辉县市| 芜湖县| 清原| 鹤壁市| 蒙自县| 玉山县| 庆城县| 丰台区| 义马市| 龙里县| 衡阳市| 盐城市| 涟源市| 莲花县| 南乐县| 社会| 遵义县| 贵阳市| 乾安县| 东乌| 双流县| 黄陵县| 庆云县| 巨野县| 伊川县| 和林格尔县| 郎溪县| 大丰市|