实时拖放移动

Posted

技术标签:

【中文标题】实时拖放移动【英文标题】:drag and drop move in real time 【发布时间】:2019-12-19 09:22:22 【问题描述】:

如何使用html拖放api和纯js实现这个效果https://stackblitz.com/angular/pldxjeolvdy?file=app%2Fcdk-drag-drop-overview-example.ts

一句话,让一个元素实时移动(不是默认的阴影效果)。

我试图在拖动事件中使用与 ondrop 事件相同的 drop() 方法,但失败了。所以我在网上搜索,似乎我们无法在dragover事件中获取e.dataTransfer.getData('text')。

HTML5 Drag and Drop anywhere on the screen 使用这个答案我可以移动 div 但它不像我附加的示例那样实时

【问题讨论】:

您可以使用 javascript mouseDown()mouseUp() 函数。当鼠标按下时,将 css 添加到 div position: absolute; 并跟随鼠标指针。您还应该为这样的插件编写代码并尝试一下。当你失败时,你可以写下示例代码并寻求帮助。因为我们帮助您,但我们不为您编写代码。 @ariferol01 嗨,谢谢,您的方法非常合理。我所需要的只是一个想法或一种方法来修复上面的“HTML5 拖放屏幕上的任意位置”示例。那么,在您看来,拖放api不能达到同样的效果吗?如果是这样,我会使用 mouseDown 我不能不尝试就说清楚,但我看到 jQuery Ui 上有一个 draggable() 函数。如果你愿意,我可以为 jQuery Ui 写一个答案draggable() @ariferol01 嘿,我刚刚阅读了 2 个拖动库,看来它们都在使用 mousedown 和 mousemove 来执行此操作。谢谢。如果你能回答你在评论中所说的话,我会接受。 【参考方案1】:

如果你想用更少的代码解决这个问题,你可以使用 jQuery Ui draggable(); 函数来实时移动任何元素。

$( function() 
    $("#drag").draggable();
   );
#drag 
width: 150px;
height: 150px;
padding: 10px; 
z-index:9;
cursor: all-scroll;
color:#fff;
background-color: green;


.other
width:90%;
position:relative;
padding: 10px;
background-color: red;
color:#fff;
z-index: 0;
margin-top:10px;
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Draggable element</title>
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

</head>
<body>
 
<div id="drag" class="ui-widget-content">
  Drag this div
</div>

<div class="other">
<h4>Other elements </h4>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged.
</div>
 
</body>
</html>

【讨论】:

以上是关于实时拖放移动的主要内容,如果未能解决你的问题,请参考以下文章

数据可视化看板:基于 Echarts + Python Flask 动态实时大屏

移动端实时阴影+自投影技术实现

移动端实时视频直播如何做到实时秒开流畅不卡

浅析即时通讯开发中移动端实时消息推送技术

为实时跨浏览器移动应用程序寻找框架[关闭]

Flutter 与 firebase 实时数据库移动和网络