拖拽--拖拽过程出现虚框效果

Posted a-ling

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了拖拽--拖拽过程出现虚框效果相关的知识,希望对你有一定的参考价值。

 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             #div1:hover{
14                 cursor: pointer;
15             }
16             .box{
17                 border: 1px dashed black;
18                 position: absolute;
19             }
20         </style>
21     </head>
22     <body>
23         <div id="div1"></div>
24         <script>
25             var oDiv = document.getElementById(\'div1\');
26             
27             var disX = 0;    //鼠标的横向距离
28             var disY = 0;     //鼠标的纵向距离
29             
30             oDiv.onmousedown = function(ev){
31                 var oEvent = ev || event;
32                 disX = oEvent.clientX - oDiv.offsetLeft;
33                 disY = oEvent.clientY - oDiv.offsetTop;
34                 
35                 var oBox = document.createElement(\'box\');
36                 oBox.className = \'box\';
37                 
38                 oBox.style.width = oDiv.offsetWidth - 2 + \'px\';
39                 oBox.style.height = oDiv.offsetHeight - 2 + \'px\';
40                 
41                 oBox.style.left = oDiv.offsetLeft + \'px\';
42                 oBox.style.top = oDiv.offsetTop + \'px\';
43                 
44                 document.body.appendChild(oBox);
45                 
46                 document.onmousemove = function(ev){
47                     var oEvent = ev || event;
48                     var l = oEvent.clientX - disX;
49                     var t = oEvent.clientY - disY;
50                     
51                     //根据最新的鼠标坐标来确定div的坐标
52                     oBox.style.left = l + \'px\';
53                     oBox.style.top = t + \'px\';
54                 }
55                 
56                 document.onmouseup = function(ev){
57                     document.onmousemove = null;
58                     document.onmouseup = null;
59                     
60                     oDiv.style.left = oBox.offsetLeft + \'px\';
61                     oDiv.style.top = oBox.offsetTop + \'px\';
62                     
63                     document.body.removeChild(oBox);
64                 }
65                 
66                 //解决火狐拖拽的bug,取消默认事件
67                 return false;
68             }
69         </script>
70     </body>
71 </html>

效果:

 

以上是关于拖拽--拖拽过程出现虚框效果的主要内容,如果未能解决你的问题,请参考以下文章

Js使用面向对象和面向过程的方法实现拖拽物体的效果

js拖拽效果

vue.draggable拖拽组件中用transition-group包裹拖拽组件了,拖拽还是没有动画?

Android拖拽动画实现

jquery拖拽(最浅显易懂的分析)

js实现鼠标的拖拽效果