拖拽--吸附

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta charset="UTF-8">
 5         <title>拖拽--吸附效果</title>
 6         <style>
 7             #div1{
 8                 width: 100px;
 9                 height: 100px;
10                 background: red;
11                 position: absolute;
12             }
13             #div2{
14                 width: 700px;
15                 height: 500px;
16                 background: #ccc;
17                 position: relative;
18             }
19             #div1:hover{
20                 cursor: pointer;
21             }
22         </style>
23     </head>
24     <body>
25         <div id="div2">
26             <div id="div1"></div>
27         </div>
28         <script>
29             var oDiv = document.getElementById(‘div1‘);
30             var oDiv2 = document.getElementById(‘div2‘);
31
32             var disX = 0;    //鼠标的横向距离
33             var disY = 0;     //鼠标的纵向距离
34
35             oDiv.onmousedown = function(ev){
36                 var oEvent = ev || event;
37                 disX = oEvent.clientX - oDiv.offsetLeft;
38                 disY = oEvent.clientY - oDiv.offsetTop;
39
40                 document.onmousemove = function(ev){
41                     var oEvent = ev || event;
42                     var l = oEvent.clientX - disX;   //div1的横向距离
43                     var t = oEvent.clientY - disY;   ////div1的纵向距离
44
45                     if(l<50){   //div1从div2左边被拖出去   吸附效果
46                         l = 0;
47                     }else if(l > oDiv2.offsetWidth - oDiv.offsetWidth){
48                         l = oDiv2.offsetWidth - oDiv.offsetWidth;
49                     }
50                     if(t<50){   //div1从div2上边被拖出去
51                         t = 0;
52                     }else if(t>oDiv2.offsetHeight - oDiv.offsetHeight){
53                         t = oDiv2.offsetHeight - oDiv.offsetHeight;
54                     }
55
56                     //根据最新的鼠标坐标来确定div的坐标
57                     oDiv.style.left = l + ‘px‘;
58                     oDiv.style.top = t + ‘px‘;
59                 }
60
61                 document.onmouseup = function(ev){
62                     document.onmousemove = null;
63                     document.onmouseup = null;
64                 }
65
66                 //解决火狐拖拽的bug,取消默认事件
67                 return false;
68             }
69         </script>
70     </body>
71 </html>
时间: 2024-08-24 20:10:40

拖拽--吸附的相关文章

鼠标拖拽吸附效果

JavaScript鼠标拖动+自动吸附实例 学了几天的JavaScript,自己动手做了一个简单的鼠标拖动的实例,拖动过程中科自动检测与目标容器的距离,在一定的距离范围内可以自动将被拖动的元素加入到目标容器中,希望对开始学习javascript的童鞋有用…… 先看看效果图(Chrome.FireFox.Opera.Safari测试通过): 效果图(虚线框:目标对象    蓝色填充透明框:临时拖动对象   红色填充框:被拖动对象) 主要思路:首先给要拖动的div添加一个鼠标按下(mousedown

理解事件捕获。在限制范围内拖拽div+吸附+事件捕获

一.实现的效果是在限制范围内拖拽div+吸附+事件捕获. 这里需要理解的是事件捕获,这个事件捕获也是为了兼容div在拖拽过程中,文本不被选中这个问题. 如此良辰美景,拖拽也可以很洒脱哈.先看看图, 二.一步步的实现这个拖拽过程的几个要求 (一)拖拽起来 里面的边框是表示页面哦(我们的屏幕所能看到的东东). 获取移动距离的思路: 记录鼠标按下和鼠标抬起两次的坐标,然后相减,再加上div跟边缘之间的间距.就得到移动距离. 之前我也在这里困惑了,不明白为什么还要再加上offsetLeft.原因就是cl

HT for Web列表和3D拓扑组件的拖拽应用

很多可视化编辑器都或多或少有一些拖拽功能,比如从一个List列表中拖拽一个节点到拓扑组件上进行建模,并且在拖拽的过程中鼠标位置下会附带一个被拖拽节点的缩略图,那么今天我们就来实现这样的拖拽效果. 首先我们需要创建一个ListView列表,在列表中加入图片信息,让List列表不那么单调,先来看看效果图. 接下来我们一步一步来是想这个ListView列表,先来解决下数据,在这里我就列举一两个: var products = [ { ProductId : 1, ProductName : "Chai

JS—实现拖拽

JS中的拖拽示例:    1)实现拖拽思路:当鼠标按下和拖拽过程中,鼠标与拖拽物体之间的相对距离保持不变    2)实现拖拽遇到的问题:        问题1:当鼠标按下移动过快时,离开了拖拽的物体时,这时拖拽物体将不再随着鼠标移动                因为拖拽的div太小了,这时我们可以将在拖拽物体上的mousemove事件放到document上面                同时将mouseup也改为document上面的事件                IE下直接用obj.s

JQUERY 拖拽 draggable droppable resizable selectable sortable

今天用了jq ui的拖动碰撞功能,好不容易看到有详细的API解说,记录如下: <script language="JavaScript" type="text/javascript" src="ui/jquery-1.8.2.js"></script> <script language="JavaScript" type="text/javascript" src="

ToolStrip控件左右拖拽移动效果实现

1.主窗体下部添加一个Panel乘放ToolStrip控件以实现ToolStrip在窗体下部定位.2.当ToolStrip控件中子控件超出屏幕时,拖动控件可以实现滑动效果.拖动到控件边缘距窗体边缘1/3宽度时(可设),自动回弹.拖动控件边缘在屏幕内时释放鼠标,控件自动回弹,边缘吸附窗体边缘.3.当ToolStrip控件中子控件数目较少可以在屏幕上完全显示时,拖动效果不可见.4.增加 添加.删除 按钮,点击时可增删一个ToolStripButton,方便拖动效果可见(ToolStrip控件中子控件

Javascript 拖拽的一些简单的应用——逐行分析代码,让你轻松了解拖拽的原理

今天我们来看看如何让拖拽的物体不能拖出某个div之外和拖拽的吸附功能 上次讲到我们的拖拽是不可拖出可视区范围的,在这基础上我们加个父级的div,不让他拖出父级.原理和之前的一样,简单吧. <style type="text/css"> #div1 { width: 100px; height: 100px; background: red; position: absolute; } #div2 { width: 400px; height: 300px; backgrou

JQuery UI的拖拽功能

JQuery UI是JQuery官方支持的WebUI 代码库,包含底层交互.动画.特效等API,并且封装了一些Web小部件(Widget).同时,JQuery UI继承了jquery的插件支持,有大量的第三方插件可以丰富JQuery UI的功能. JQuery UI提供的API极大简化了拖拽功能的开发.只需要分别在拖拽源(source)和目标(target)上调用draggable和droppable两个函数即可. 拖拽原理 首先要明确几个概念. ource:拖拽源,要拖动的元素. taerge

等虚线框的拖拽

<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title><style>.box{border: 3px solid yellow; position: absolute;}#div1{width: 100px; height: 100px; background: red; position: