实时拖放移动
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 但它不像我附加的示例那样实时
【问题讨论】:
您可以使用 javascriptmouseDown()
和 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>
【讨论】:
以上是关于实时拖放移动的主要内容,如果未能解决你的问题,请参考以下文章