JS+DIV实现拖动效果
作者:geekzsp 时间:2023-07-02 05:19:37
本文实例为大家分享了JS+DIV实现拖动效果的具体代码,供大家参考,具体内容如下
效果图
思路
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
<div id="title" style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
<div class="box"></div>
</div>
<script>
var startx;
var starty;
var startLeft;
var startTop;
var titleDiv=document.getElementById("title");
var mainDiv=document.getElementById("main");
var isDown=false;
// 鼠标按下
function movedown(e){
e=e?e:window.event;
isDown=true;
startx=e.clientX;
starty=e.clientY;
startLeft=parseInt(mainDiv.style.left);
startTop=parseInt(mainDiv.style.top);
}
// 鼠标移动
function move(e){
e=e?e:window.event;
if(isDown) {
mainDiv.style.left = e.clientX - (startx - startLeft)+"px";
mainDiv.style.top = e.clientY - (starty - startTop)+"px";
}
}
// 鼠标松开
function moveup(){
isDown=false;
}
titleDiv.οnmοusedοwn=movedown;
titleDiv.οnmοusemοve=move;
titleDiv.οnmοuseup=moveup;
</script>
</body>
</html>
优化(封装,以及解决拖动问题(事件捕获))
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div id="main" style="background-color: aqua;width: 100px;height: 100px;position: absolute;left: 50px;top: 50px">
<div id="title"
style="height: 10px;width:100%;background-color: antiquewhite;position: absolute;left: 0px;top: 0px"></div>
<div class="box"></div>
</div>
<script>
function Mover(title) {
this.obj = title;
this.startx = 0;
this.starty;
this.startLeft;
this.startTop;
this.mainDiv = title.parentNode;
var that = this;
this.isDown = false;
this.movedown = function (e) {
e = e ? e : window.event;
if (!window.captureEvents) {
this.setCapture();
} //事件捕获仅支持ie
// 函数功能:该函数在属于当前线程的指定窗口里设置鼠标捕获。一旦窗口捕获了鼠标,
// 所有鼠标输入都针对该窗口,无论光标是否在窗口的边界内。同一时刻只能有一个窗口捕获鼠标。
// 如果鼠标光标在另一个线程创建的窗口上,只有当鼠标键按下时系统才将鼠标输入指向指定的窗口。
// 非ie浏览器 需要在document上设置事件
that.isDown = true;
that.startx = e.clientX;
that.starty = e.clientY;
that.startLeft = parseInt(that.mainDiv.style.left);
that.startTop = parseInt(that.mainDiv.style.top);
}
this.move = function (e) {
e = e ? e : window.event;
if (that.isDown) {
that.mainDiv.style.left = e.clientX - (that.startx - that.startLeft) + "px";
that.mainDiv.style.top = e.clientY - (that.starty - that.startTop) + "px";
}
}
this.moveup = function () {
that.isDown = false;
if (!window.captureEvents) {
this.releaseCapture();
} //事件捕获仅支持ie
}
this.obj.onmousedown = this.movedown;
this.obj.onmousemove = this.move;
this.obj.onmouseup = this.moveup;
//非ie浏览器
document.addEventListener("mousemove", this.move, true);
}
var mover = new Mover(document.getElementById("title"));
//写两个是为了解决 ie 和非ie 浏览器关于事件捕获 的兼容性问题
</script>
</body>
</html>
来源:https://blog.csdn.net/mixi9760/article/details/52059047
标签:JS,DIV,拖动
0
投稿
猜你喜欢
python sys.argv[]用法实例详解
2023-10-15 17:21:55
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2024-05-22 10:07:10
Python configparser模块常用方法解析
2021-07-08 17:31:11
SQL Server数据库查询优化3种技巧
2008-10-17 10:10:00
关于Tensorflow 模型持久化详解
2021-02-26 14:27:33
Python数据结构之队列详解
2023-11-17 14:04:34
python实现双色球随机选号
2021-06-26 05:11:09
php swoft框架实例用法
2024-05-11 09:45:02
YUI学习笔记(4)
2009-03-10 18:25:00
CI框架中数据库操作函数$this->db->where()相关用法总结
2024-06-05 09:45:16
使用FCKeditor添加文章时,在文章最后多了逗号
2007-10-11 13:38:00
如何在conda虚拟环境中配置cuda+cudnn+pytorch深度学习环境
2022-06-16 14:43:04
Python sorted函数详解(高级篇)
2021-08-14 15:58:28
基于SQL中SET与SELECT赋值的区别详解
2024-01-20 02:13:17
python实现网页自动签到功能
2024-01-03 00:13:14
Python实现无损放大图片的示例代码
2022-12-15 12:50:12
python多进程控制学习小结
2021-08-31 00:48:57
Python实现数字图像处理染色体计数示例
2022-06-15 03:32:36
XML简易教程之三
2008-09-05 17:19:00
使用python实现抓取中国银行外汇牌价首页数据实现
2021-11-28 02:05:49