比较有意思的原生态js拖拽写法----摘自javascript高级程序设计3
2024-08-29 13:46:55
var DragDrop = function () {
var dragging = null;
var diffX = 0;
var diffY = 0;
function handleEvent(event) {
event = EventUtil.getEvent(event);
var target = EventUtil.getTarget(event);
switch (event.type) {
case "mousedown":
if (target.className.indexOf("draggable") > -1) {
dragging = target;
diffX = event.clientX - target.offsetLeft;
diffY = event.clientY - target.offsetTop;
}
break;
case "mousemove":
if (dragging !== null) {
dragging.style.left = (event.clientX - diffX) + "px";
dragging.style.top = (event.clientY - diffY) + "px";
}
break;
case "mouseup":
dragging = null;
break;
}
}
return {
enable : function () {
EventUtil.addHandler(document, "mousedown", handleEvent);
EventUtil.addHandler(document, "mousemove", handleEvent);
EventUtil.addHandler(document, "mouseup", handleEvent);
},
disable : function () {
EventUtil.addHandler(document, "mousedown", handleEvent);
EventUtil.addHandler(document, "mousemove", handleEvent);
EventUtil.addHandler(document, "mouseup", handleEvent);
}
}
} ();
window.onload = function () {
DragDrop.enable(); DragDrop.disable();
}
<body>
<div class="draggable" style="position:absolute; background-color:Red; width:100px; height:100px;left:0px"></div>
<div class="draggable" style="position:absolute; background-color:Red; width:100px; height:100px;left:200px"></div>
<div class="draggable" style="position:absolute; background-color:Red; width:100px; height:100px;left:500px"></div>
<div class="draggable" style="position:absolute; background-color:Red; width:100px; height:100px;left:800px"></div>
</body>
最新文章
- 误删/usr文件夹解决办法
- Java连接Oracle database小结
- 1 构建Mysql+heartbeat+DRBD+LVS集群应用系统系列之DRBD的搭建
- 1017. A除以B (20)
- 和声搜索算法-python实现
- UVa 10253 (组合数 递推) Series-Parallel Networks
- 怎样在osg中动态的设置drawable的最近最远裁剪面
- laravel controller:make
- [HDU 4828] Grids
- 使用libCurl实现断点下载
- buffer cache chain 图
- HDOJ 1308.Is It A Tree?
- HDU 1505 Largest Rectangle in a Histogram &;amp;&;amp; HDU 1506 City Game(动态规划)
- */美女镇楼/*>;>;>;---PHP中的OOP-->;面对过程与面对对象基础概念与内容--(封装、继承、多态)
- 一些css书写的小技巧
- angular/cli 常用指令
- kNN总结
- tr1
- Java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind异常
- 判断文件是否存在,不要用if exist和if not exist,因为他们会受到文件是否隐藏的影响,改用dir /a 命令代替
热门文章
- js 兼容各类手机 的写法 待续
- iOS开发多线程篇—GCD简介
- pyqt5:图片自适应QLabel大小和图片移除
- conan-transit服上的库列表
- linux-*.filetype.bz2 unzip
- Codeforces123E. Maze【树形dp】【概率dp】【证明题】
- (8)os和sys模块
- 使用Spring Boot操作Hive JDBC时,启动时报出错误:NoSuchMethodError: org.eclipse.jetty.servlet.ServletMapping.setDef
- log4net保存到数据库系列五、新增数据库字段
- JS判断IP的正则表达式