Maison > Questions et réponses > le corps du texte
目前jquery ui的draggable有26kb,稍微有点大,想问一下高手该怎样来写一个能兼容所有浏览器的js实现draggable?
天蓬老师2017-04-10 13:12:25
- 可移动的元素一定是定位元素(非static定位的)
- 监听鼠标
mousedown
,mouseup
和mousemove
事件。- mousemove事件处理里获取
event
事件对象的clientX
和clientY
属性, 通过style
设置元素的top
和left
举例代码如下:
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了,题主自己写写看吧
黄舟2017-04-10 13:12:25
不怪有人-1。这问题无异于“请帮我从头到尾写一个XX功能的程序,还要最简化掉”。
别费神自己写,查GitHub啊。比如说可以这样随便找一个。
值得注意的是,也许有必要看一下现有的工作是否基于jQuery UI。如果已经有了这个环境,那也就别怕个别模块再大一些了,用原生的模块总不是坏事。或者看一下是否已经用了jQuery,如果用了就找jQuery的插件来做这个。
还有个提示是“先实现再优化”。老生常谈了,不忘就行。