DOM元素四向拖动的基本实现
2016-07-28 00:00
459 查看
摘要: 一个浮动框,可以通过鼠标或触摸四向拖动
一般弹框都是固定居中(或顶部、底部)显示的,最近碰到了这样的考题,觉得有趣,所以记录下来。
首先,假定我们拖动一个蓝色的方块:
当鼠标左键按下时,它进入可拖动状态,然后随着鼠标移动而移动,当鼠标松开时,停止移动。
用到的事件是
对于触屏设备,将相应的事件换成
多年以前,刚会点js,做过同样的功能,写得巨复杂,反复改了很久。现在梳理下,其实很简单,这就是进步吧,哈哈!
一般弹框都是固定居中(或顶部、底部)显示的,最近碰到了这样的考题,觉得有趣,所以记录下来。
首先,假定我们拖动一个蓝色的方块:
#box { position: absolute; width: 100px; height: 100px; background-color: blue; }
当鼠标左键按下时,它进入可拖动状态,然后随着鼠标移动而移动,当鼠标松开时,停止移动。
用到的事件是
mousedown,
mousemove,
mouseup,代码如下:
function movingbox(elem) { var moving = false; var x, y; elem.onmousedown = function(e) { moving = true; // 因为css里没定义left和top,所以初始置0,避免其跳到左上角 x = elem.style.left ? e.pageX - parseInt(elem.style.left) : 0; y = elem.style.top ? e.pageY - parseInt(elem.style.top) : 0; elem.style.cursor = 'move'; }; // 侦听document的mousemove和mouseup事件,这样当鼠标快速移动时,也能正确响应 document.addEventListener('mousemove', function(e) { if (moving) { elem.style.left = e.pageX - x + 'px'; elem.style.top = e.pageY - y + 'px'; } }, false); document.addEventListener('mouseup', function() { if (moving) { moving = false; elem.style.cursor = 'inherit'; } }, false); } movingbox(document.getElementById('box'));
对于触屏设备,将相应的事件换成
touchstart,
touchmove,
touchend即可。
多年以前,刚会点js,做过同样的功能,写得巨复杂,反复改了很久。现在梳理下,其实很简单,这就是进步吧,哈哈!
相关文章推荐
- Android Mouse实现过程详细笔记
- 拖动Html元素集合 Drag and Drop any item
- jQuery使用drag效果实现自由拖拽div
- cmd move命令 移动文件(夹)
- 学习drag and drop js实现代码经典之作
- JavaScript和JQuery的鼠标mouse事件冒泡处理
- drag-and-drop实现图片浏览器预览
- Fn FnMut FnOnce以及move的区别
- Win8.1系统MOUSE WITHOUT BORDERS鼠标失效提示无法连接找不到主机的解决方法
- VMWare ESXi 5 Move VM to Different Datastore
- 【unity】NGUI如何使用拖拽组件
- 控制台下鼠标操作
- DM816X 实现 USB HID Gadget 鼠标键盘功能
- js拖动div
- 高水位的表处理办法
- alter table move跟shrink space的区别
- MFC Drag & Drop
- html 5 拖拽示例代码
- C++11中的右值引用及move语义编程
- div 移动 drag