极乐门资源网 Design By www.ioogu.com
本文实例讲述了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程序设计有所帮助。
标签:
JS,鼠标拖拽,JS鼠标拖拽
极乐门资源网 Design By www.ioogu.com
极乐门资源网
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
极乐门资源网 Design By www.ioogu.com
暂无JS鼠标拖拽实例分析的评论...
更新日志
2025年01月17日
2025年01月17日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]