js鼠标拖拽事件
来源:互联网 发布:delphi 算法 编辑:程序博客网 时间:2024/05/20 17:41
只记录left,top同理。
clientX:返回鼠标相对于浏览器的水平坐标;
offsetLeft:返回当前对象距离浏览器(父对象)的左侧距离;
offsetWidth:对象的可见宽度;
onmousemove:鼠标移动事件;
连接点是鼠标放在div上拖动时的位置(坐标)不会改变的,起名字为unchangX;
鼠标拖动事件是利用position:absolute绝对定位改变left和top,left的位置是通过clientX-unchangeX得到的。
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>鼠标拖拽事件</title> <style type="text/css"> #box{ width:100px; height:100px; background-color:cornflowerblue; position:absolute; left:0; top:0; } </style></head><body> <div id="box"></div> <script type="text/javascript"> window.onload = function(){ var oDiv = document.getElementById("box"), unchangeX = 0, unchangeY = 0; oDiv.onmousedown =function(ev){//鼠标按下 var oEvent=ev||event; var unchangeX = oEvent.clientX - oDiv.offsetLeft;//鼠标的x坐标减去box的左边距离,unchangeX这个距离是不会变的,通过这个新鼠标的X坐标减去unchangeX就是box的Left var unchangeY = oEvent.clientY - oDiv.offsetTop; document.onmousemove = function(ev){//为了防止鼠标移动太快而离开了DIV产生了bug,所以要给整个页面加onmousemove事件 var oEvent = ev||event; var oLeft = oEvent.clientX - unchangeX; var oTop = oEvent.clientY - unchangeY; //优化部分:鼠标移动到浏览器左侧、右侧、上侧、下侧时的问题 if(oLeft < 0){ oLeft = 0; }else if(oLeft>document.documentElement.clientWidth - oDiv.offsetWidth){ oLeft = document.documentElement.clientWidth - oDiv.offsetWidth; } if(oTop < 0){ oTop = 0; }else if(oTop>document.documentElement.clientHeight - oDiv.offsetHeight){ oTop = document.documentElement.clientHeight - oDiv.offsetHeight; } oDiv.style.left = oLeft + 'px'; oDiv.style.top = oTop + 'px'; }; document.onmouseup = function(){//鼠标松开时 document.onmousemove = null;//把鼠标移动清除 document.onmouseup = null;//把鼠标松开清除 }; return false; }; } </script></body></html>
阅读全文
0 0
- js 鼠标拖拽事件
- js鼠标拖拽事件
- JS事件冒泡与鼠标拖拽
- 鼠标拖拽事件
- 鼠标拖拽事件
- js 鼠标事件 鼠标坐标
- js鼠标事件
- js鼠标事件大全
- JS一些鼠标事件
- js鼠标事件大全
- js鼠标事件大全
- JS鼠标事件(转)
- JS鼠标事件大全
- JS鼠标事件大全
- JS鼠标事件大全
- js鼠标事件大全
- JS鼠标事件摘录
- js鼠标事件大全
- Redis 工具类
- Python资料之map()函数
- Java生成CSV文件实例详解
- zephir安装
- 在IDEA上使用lombok
- js鼠标拖拽事件
- HTTP请求方式比较
- 任意android 手机支持daydream
- 交换排序之冒泡排序与快速排序
- C 字符串模二加加解密
- centos6.5 系统安装 git
- Use youtube-dl下载YouTube视频
- Oracle全家桶(VirtualBox+OEL+Oracle11gR2)快捷搭建数据库服务器
- Go语言_Go_Golang 逐行读取文件