可视区域内鼠标拖拽框
来源:互联网 发布:普法网络知识竞赛答题 编辑:程序博客网 时间:2024/06/05 00:33
要想在通过鼠标来拖拽div,就要在鼠标点下的时刻获取光标与div的距离。然后在光标移动时设置div的left值为光标的left减去那个距离,设置div的top值为光标的top减去那个距离。但是div的left与top是相对于body(即整个页面),而光标的left与top却是相对于可视区域而言的。在没有滚动条时,两者在参考系是一样的;但是在滚动条出现以后两者的参考系就不同了。所以,有两种解决办法,要么把两者的参考系都变成body,要么把两者的参考系都变成可视区域。在这里,我采取了body作为参考系的方法。
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>鼠标拖拽框</title><style>body{height:1000px;width:1500px;}#box{position: absolute;top:0;left:0;background-color: red;width:100px;height:100px;cursor: pointer;}</style></head><body><div id="box"></div><script>function getPos(){var scrollTop = document.documentElement.scrollTop || document.body.scrollTop;var scrollLeft = document.documentElement.scrollLeft || document.body.scrollLeft;return{x: scrollLeft, y: scrollTop};}//用以获取滚动条的距离function getStyle(obj,name){if(obj.currentStyle){return obj.currentStyle[name];}else{return getComputedStyle(obj,false)[name];}}var oDiv = document.getElementById('box');var disx = 0;var disy = 0;oDiv.onmousedown = function(ev){var oEvent = ev || event;var pos = getPos();disx = pos.x+oEvent.clientX - parseInt(getStyle(oDiv,'left'));disy = pos.y+oEvent.clientY - parseInt(getStyle(oDiv,'top'));document.onmousemove = function(ev){var oEvent = ev || event;var pos = getPos(oEvent);var l = pos.x+oEvent.clientX - disx;var h = pos.y+oEvent.clientY - disy;if(l<pos.x){l = pos.x;}if (l>document.documentElement.clientWidth + pos.x - parseInt(getStyle(oDiv,'width'))) {l = document.documentElement.clientWidth + pos.x - parseInt(getStyle(oDiv,'width'));}if(h<pos.y){h = pos.y;}if (h>document.documentElement.clientHeight + pos.y-parseInt(getStyle(oDiv,'height'))) {h = document.documentElement.clientHeight + pos.y-parseInt(getStyle(oDiv,'height'));}oDiv.style.left = l + 'px';oDiv.style.top = h + 'px';}document.onmouseup = function(){document.onmousemove = null;document.onmouseup = null;}return false;}</script></body></html>
0 0
- 可视区域内鼠标拖拽框
- 可视区域内拖拽
- js判断元素是否在可视区域内
- 判断元素是否在可视区域内
- 如何判断一个div是否在页面可视区域内
- Jquery判断页面元素是否在浏览器的可视区域内
- 将鼠标锁定在指定区域内
- C#判断鼠标在某个区域内
- 如何判断鼠标在DIV的区域内?
- C#判断鼠标在某个区域内
- 固定区域内鼠标跟随简单例子
- 如何利用自己的数据制作社交地图?只显示可视区域内的标注
- 通过Jquery判断页面元素是否在浏览器的可视区域内
- 通过Jquery判断页面元素是否在浏览器的可视区域内
- 通过Jquery判断页面元素是否在浏览器的可视区域内
- 通过Jquery判断页面元素是否在浏览器的可视区域内
- jQuery poshytip实现页面不可视区域内的字段信息通过提示框展示
- 判断鼠标是否落在界面中某一个区域内
- 1.13 12 分数求和
- 类与对象
- lua split函数
- [codevs1766]装果子
- 为 Java EE 应用提供的 9 种 Docker 方法
- 可视区域内鼠标拖拽框
- 数据结构和算法--二叉树学习
- linux笔记之信号量
- fiddler教程
- 两个es集群部署在一台机器上不成功 已解决
- 汉诺塔算法
- 了解Ajax基础
- Ubuntu14.04下安装 Python图表绘制库
- Invalid Call – yii\base\InvalidCallException The cookie collection is read only.