javascript - 如何通过js实现最简单的draggable?
高洛峰
高洛峰 2017-04-10 13:10:25
[JavaScript讨论组]

目前jquery ui的draggable有26kb,稍微有点大,想问一下高手该怎样来写一个能兼容所有浏览器的js实现draggable?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(3)
天蓬老师

回题主,简单的draggable实现没有多复杂的,需要如下几个条件

  1. 可移动的元素一定是定位元素(非static定位的)
  2. 监听鼠标mousedownmouseupmousemove事件。
  3. mousemove事件处理里获取 event 事件对象的 clientXclientY属性, 通过style设置元素的 topleft

举例代码如下:


var IsMousedown, LEFT, TOP, obj; document.getElementById("Mdown").onmousedown=function(e) { obj = document.getElementById("box"); IsMousedown = true; e = e||event; LEFT = e.clientX - parseInt(login.style.left); TOP = e.clientY - parseInt(login.style.top); document.onmousemove = function(e) { e = e||event; if (IsMousedown) { login.style.left = e.clientX - LEFT + "px"; login.style.top = e.clientY - TOP + "px"; } } document.onmouseup=function(){ IsMousedown=false; } }

没什么特效,简单的draggable就是这么实现的,不贴demo了,题主自己写写看吧

黄舟

不怪有人-1。这问题无异于“请帮我从头到尾写一个XX功能的程序,还要最简化掉”。

别费神自己写,查GitHub啊。比如说可以这样随便找一个。

值得注意的是,也许有必要看一下现有的工作是否基于jQuery UI。如果已经有了这个环境,那也就别怕个别模块再大一些了,用原生的模块总不是坏事。或者看一下是否已经用了jQuery,如果用了就找jQuery的插件来做这个。

还有个提示是“先实现再优化”。老生常谈了,不忘就行。

高洛峰

http://wujinzhilu.com/demo/learn/6/drag.html

比如这样

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号