幽灵资源网 Design By www.bzswh.com
拖动是一件非常酷的事情。你点击某个对象,并按住鼠标不放,将鼠标移动到另一个区域,然后释放鼠标按钮将对象放在这里。
下面是一个简单的案例:
HTML部分:注意,拖动元素一定要为绝对定义,即position = absolute;
复制代码 代码如下:<div style="position:absolute;height:100px;width:100px;background:red" class="draggable"></div>
<script src="/UploadFiles/2021-04-02/dome.js">
JS部分(dome.js):
var EventUtil = { // 获取事件和目标 getEvent : function (event) { return event "on" + type, handler); } }, // 注销监听事件 delEvent : function (element, type, handler) { if (element.removeEventListener) { element.removeEventListener(type, handler, false); } else if (element.detachEvent) { element.detachEvent("on" + type, handler); } } } var DragDrop = function () { // 判断DOM元素是否正在被拖动的标志 var dragging = null; // DOM元素左上角与鼠标指针的差值 diffX = 0; diffY = 0; function handleEvent(event) { event = EventUtil.getEvent(event); var target = EventUtil.getTarget(event); switch (event.type) { case "mousedown" : // 判断DOM元素的class中是否含有draggable属性 if (target.className.indexOf("draggable") > -1) { dragging = target; diffX = event.clientX - target.offsetLeft; diffY = event.clientY - target.offsetTop; } break; case "mousemove" : if (dragging != null) { target.style.left = event.clientX - diffX + "px"; target.style.top = event.clientY - diffY + "px"; } break; case "mouseup" : dragging = null; break; } } return { enable : function () { EventUtil.addEvent(document, "mousedown", handleEvent); EventUtil.addEvent(document, "mousemove", handleEvent); EventUtil.addEvent(document, "mouseup", handleEvent); }, disable : function () { EventUtil.delEvent(document, "mousedown", handleEvent); EventUtil.delEvent(document, "mousemove", handleEvent); EventUtil.delEvent(document, "mouseup", handleEvent); } } }(); DragDrop.enable();
这里需要讲解的是diffX和diffY,它们表示元素左上角与鼠标指针的差值。
diffX = 鼠标的x坐标 - 元素对象的offsetLeft
diffY = 鼠标的y坐标 - 元素对象的offsetTop
以上就是本文的全部内容,希望对大家的学习有所帮助。
标签:
js,拖动
幽灵资源网 Design By www.bzswh.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
幽灵资源网 Design By www.bzswh.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。