js实现简单拖拽案例
来源:互联网 发布:linux for循环用法 编辑:程序博客网 时间:2024/06/14 00:44
简单拖拽事件主要是监听三个事件:onmousedown, onmousemove, onmouseup 三个事件,思路也很简单,但是写的时候还是遇到了一些小问题,先放代码:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>拖拽事件案例</title> <style type="text/css"> *{ margin: 0; padding: 0; box-sizing: border-box; } #div{ width: 100px; height: 100px; position: relative; left: 0; top: 0; background: #00a9e2; font-size: 28px; color: #fff; text-align: center; line-height: 100px; } </style></head><body> <div id="div"> 拖拽 </div></body><script> var div = document.getElementById('div'); div.onmousedown = function (e) { var startX = div.offsetLeft; var startY = div.offsetTop; var downX = e.clientX; var downY = e.clientY; document.onmousemove = function (e) { var moveX = e.clientX; var moveY = e.clientY; div.style.left = (startX + moveX - downX) + 'px'; div.style.top = (startY + moveY - downY) + 'px'; }; document.onmouseup = function () { document.onmousemove = null; document.onmouseup = null; } };</script></html>
说一下遇到的小问题:
1,开始没有获取startX,startY, 当第一次拖拽时正常,但是第二次就有问题了,点击后直接返回初始位置了,所以我们每次onmousedown时应该先获取startX,startY,在赋值拖拽位置时要加上
2,document.onmouseup写在了onmousedown函数的外面了,只能触发一次,第二次点击时,元素便不能停止拖拽了
3,注意offsetLeft,offsetTop是获取元素相对于元素最近有定位的父元素的left,top ,没有定位的父元素,则是获取相对于body的
4,clientX(Y) 事件属性返回当事件被触发时鼠标指针向对于浏览器页面(或客户区)的水平坐标(垂直坐标)
阅读全文
0 0
- js实现简单拖拽案例
- js简单案例
- JS简单实现拖拽可视化构图
- js 案例 文本框简单校验
- js实现幻灯片案例解析
- js实现window 弹窗小案例
- Java 实现简单登陆案例
- 增强学习简单案例实现
- JS定时器简单时钟案例复习
- 简单js之select操作案例
- JS简单案例以及知识点分析
- js简单案例缓慢显示下拉菜单
- js享元模式简单案例
- 【案例】简单的js验证码
- 使用 Angular.js, Node.js 和 MongoDB开发简单案例
- Angular.js+Bootstrap实现固定表头案例
- 用js实现选项卡案例
- 简单进度条JS实现
- Java算数运算符、关系运算符、逻辑运算符
- PAT乙级1038. 统计同成绩学生(20)
- Java字符串等于判断
- PAT乙级1039. 到底买不买(20)
- 函数栈帧创建与销毁那些事儿
- js实现简单拖拽案例
- git安装及配置github
- PAT乙级1040. 有几个PAT(25)
- 移动端 触摸事件 ontouchstart、ontouchmove、ontouchend、ontouchcancel
- PAT乙级1041. 考试座位号(15)
- PAT乙级1042. 字符统计(20)
- PAT乙级1043. 输出PATest(20)
- PAT乙级1046. 划拳(15)
- PAT乙级1047. 编程团体赛(20)