JS——事件详情(拖拽案例:onmousedown、onmousemove、onmouseup方法)

实现拖拽案例

效果如下图所示:

代码如下图所示:

代码思路说明:

第23行代码:在div元素中触发onmousedown事件,实现鼠标在div按下,不提起功能  【区别于onclick,onclick:按下、提起事件,属于两个动作(即:onmousedown+onmouseup)】

第20-21行代码:声明变量,用于计算鼠标按下位置到div位置长度距离  (详细见下图解释分析)

第24-25行代码:设置鼠标按下位置到div位置长度距离(即:鼠标位置-div左边距到浏览器的长度距离)  (详细见下图解释分析)

第27行代码:鼠标移动事件   当div按下触发此事件,让div整屏可移动,这就是“document.onmousemove”的作用

第28-29行代码:让div移动,即改变div的左边距/上边距到浏览器的距离长度(记得加‘px’单位)  而div左边距到浏览器的距离长度=鼠标位置-鼠标按下位置到div位置长度距离   (详细见下图解释分析)

第32行代码:鼠标提起事件

第33-34行代码:关闭移动事件并关闭不需要的提起事件以节省内存空间

第37行代码:return false 用于解决ff旧版本(空值div拖拽bug)的兼容问题,而设置的阻止默认事件

详细解释距离的问题,如下图:(讲解20-21、24-25、28-29行的代码)

以上简单拖拽案例,足以满足需求了,但是,以上所编写的代码还有一点bug,那就是:当用户把div拖拽至浏览器外并松手,div就会消失不见,怎么找都找不回。

所以,修改以上bug,实现:div只能在浏览器范围内实现拖拽现象(防止拖出页面)

修改后的代码如下图:

效果如下图所示:

原文地址:https://www.cnblogs.com/ytraister/p/10982247.html

时间: 2024-08-27 19:42:32

JS——事件详情(拖拽案例:onmousedown、onmousemove、onmouseup方法)的相关文章

JS事件中级 --- 拖拽

http://bbs.zhinengshe.com/thread-1200-1-1.html 要求:实现div块的拖拽 原理:拖拽过程中鼠标点和div块的相对位置保持不变. 需要理解三点: 1. 为什么要把onmousemove,onmouseup加在document上面 ? 2. onmouseup要怎么使用 ? 3. 如何防止div块跑出边界 ? 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 &l

JS Event 鼠标拖拽事件

<!DOCTYPE html><html> <head>        <meta charset="UTF-8">        <title>JS Event鼠标拖拽事件</title>                <style>            #box{width:200px;height:200px;background:#000;position:absolute;}       

js实现鼠标拖拽div-------Day44

如果去问这样一个问题"你觉得鼠标操作简单,还是键盘操作简单",相信会有多数人都会回答鼠标吧,毕竟键盘按钮那么多,如果手小了或者手法不规范了,太容易出问题了,也对操作的速度和有效性是大大的降低了,当然不可否认,会有那么一批人,操作起键盘来完全可以忽略鼠标的,但这些都应该是骨灰级别的了吧,起码我现在的层次还接触不到,只能向往. 然而,当面对这么一个问题时,我突然有点纠结,因为毕竟以前我也是那么想的,但是这次开发让我是大跌眼镜,键盘操作我在开发中,我只能判定其按键是否按键,然后根据不同按键进

JS打造的拖拽翻页效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

纯js实现DIV拖拽

写代码的时候遇到需要对绝对布局的div进行拖拽的功能,起初为了省事直接在网上扒拉了一番,看到大神张鑫旭的一篇文章<JavaScript实现最简单的拖拽效果>,便直接拿来使用(膜拜大神).但发现这段代码使用前必须设置top和left样式属性,否则拖动时div会有跳动,而且不支持多个div的拖动.于是对代码大概修改了一番,贴在这里,以备后用,希望大神勿怪. var startDrag = function(bar, target, callback) { (function(bar, target

js实现鼠标拖拽多选功能

最近做了一个用js实现鼠标拖拽多选的功能,于是整理了一下思路,写了一个小demo:遮罩出现:被遮罩盖住的,即为选中的块(背景色为粉色)下面是具体代码,注释已在文中,与大家交流. <!DOCTYPE html> <html> <head> <title>鼠标拖拽多选功能</title> <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js">

JS 鼠标事件练习—拖拽效果

拖拽效果 HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>拖拽效果</title> <link rel="stylesheet" type="text/css" href="拖拽效果.css"> </head> <body> <div

js阻止默认事件、拖拽等等

1.自定义右键菜单: 1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>无标题文档</title> 6 <style> 7 * {margin:0; padding:0; list-style:none;} 8 #div1 {position:absolute; width:80px; background:#CC

js插件-简单拖拽

前端开发的时候,有好多地方用到拖拽效果,当然 http://jqueryui.com/draggable/  是个不错的选择,but 我是个打破砂锅问到底的人,抽点时间用js小小的实现了类似的插件,话不多说. first: html和css <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title&g