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     <meta charset="UTF-8">
 5     <title></title>
 6     <style>
 7         #div1 {
 8             width: 200px;
 9             height: 200px;
10             background-color: red;
11             position: absolute;
12         }
13     </style>
14     <script>
15         window.onload = function () {
16             var oDiv = document.getElementById("div1");
17
18             var disX = 0;
19             var disY = 0;
20
21             oDiv.onmousedown = function (event) {
22                 disX = event.clientX - oDiv.offsetLeft;
23                 disY = event.clientY - oDiv.offsetTop;
24
25                 document.onmousemove = function (event) {
26
27                     var divLeft = event.clientX - disX;
28                     var divTop = event.clientY - disY;
29
30                     if (divLeft < 0) divLeft = 0;
31                     if (divLeft > document.documentElement.clientWidth-oDiv.offsetWidth) {
32                         divLeft = document.documentElement.clientWidth-oDiv.offsetWidth;
33                     }
34                     if (divTop < 0) divTop = 0;
35                     if (divTop > document.documentElement.clientHeight - oDiv.offsetHeight) {
36                         divTop = document.documentElement.clientHeight - oDiv.offsetHeight;
37                     }
38
39                     oDiv.style.left = divLeft + "px";
40                     oDiv.style.top = divTop + "px";
41                 };
42                 document.onmouseup = function () {
43                     document.onmousemove = null;
44                     document.onmouseup = null;
45                 }
46             };
47         }
48     </script>
49 </head>
50 <body>
51     <div id="div1"></div>
52 </body>
53 </html>

运行效果:【点击这里】

时间: 2024-11-06 21:41:27

JS事件中级 --- 拖拽的相关文章

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实现鼠标拖拽多选功能

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

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 鼠标事件练习—拖拽效果

拖拽效果 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

Dropzone.js实现文件拖拽上传

dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 查看演示 下载源码 使用Dropzone 我们可以建立一个正式的上传form表单,并且给表单一个.dropzone的class. <form id="mydropzone" action="/upload.php" class="dropzone">&l

js实现可拖拽的div

实现一个div可以被拖拽,代码如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>zzw_drap</title> <style> * { margin: 0; padding: 0; } #box { position: absolute; top: 100px; left: 200