博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js实现拖拽
阅读量:4568 次
发布时间:2019-06-08

本文共 1160 字,大约阅读时间需要 3 分钟。

代码:

1  2  3  4     
5 Title 6 7 21 22 23 24 25
26 27 28 29 30 31 html

 

/** * Created by plter on 8/12/16. */(function () {    var rect = document.querySelector("#rect");    var rectX = 0, rectY = 0, offsetX, offsetY;    rect.onmousedown = function (event) {        offsetX = rectX - event.pageX;        offsetY = rectY - event.pageY;        document.onmousemove = function (event) {            rectX = event.pageX + offsetX;            rectY = event.pageY + offsetY;            rect.style.left = rectX + "px";            rect.style.top = rectY + "px";        };        document.onmouseup = function (event) {            document.onmousemove = null;            document.onmouseup = null;        }    }})();js

 

注意两个点:

①:开始拖拽的时候,应判断好拖拽点的位置。

②:不拖拽的时候能够“放下”。

这也挺实用的,如著名的飞机大战。

补充:2016-10-1108:35:16

代码解释

如图,rectX,rectY指的是鼠标的位置,如果不设置offset,鼠标每次的位置会在rect处,这样的效果很不好。

所以应把鼠标位置调整在鼠标落下的地方,即(把rect转换成offset)

也就有了

  

  offset保存的是rect到offset的距离的相反数。

  

  把rect转换成offset。。

修改:2017-02-15 10:33:23

  上述代码只适合元素位置为left:0;top:0;的时候,

  应该是:

      rectX=rect.offset().left,

      rectY=rect.offset().top;

转载于:https://www.cnblogs.com/chenluomenggongzi/p/5777580.html

你可能感兴趣的文章
.NetCore 使用Jenkins发布多环境下的项目并适配数据库EFCore数据库更新及替换配置文件...
查看>>
Android环境变量的设置(详细图解版)
查看>>
TextView UI美化-------自适应字体控件
查看>>
Hive与HBase区别
查看>>
ALV的html表头
查看>>
static在C和C++中的用法和区别
查看>>
CSS选择符
查看>>
JavaScript-函数
查看>>
继承的作用以及在子类中初始化所有数据的方法
查看>>
PLSQL Developer对oracle中的数据进行备份恢复
查看>>
python内置模块笔记(持续更新)
查看>>
烧死那对异性恋
查看>>
OpenStack Object Storage Developer Guide/Swift官方API文档 -- 翻译 (五)
查看>>
网络基础之物理层和数据链路层
查看>>
mysql用户
查看>>
Linux_spool命令
查看>>
Js中的字符串/数组中常用的操作
查看>>
炒冷饭系列:设计模式 装饰模式
查看>>
ASP.NET MVC5+EF6+EasyUI 后台管理系统(18)-权限管理系统-表数据
查看>>
为什么主引导记录的内存地址是0x7C00?
查看>>