【发布时间】:2018-07-18 19:26:49
【问题描述】:
我希望我的网站上有多个 div 可以在整个网站(或至少在找到它的容器中)可拖动和移动。
我想澄清一下,我在网络和 Stackoverflow 上搜索了多次,但所有这些都通过使用 jQuery 或其他一些库来建议答案。我想要一种纯 JavaScript 方式在整个网站上移动多个 div(希望只有一个功能)。
我正在做的项目是练习使用 HTML 和 JS 拖放,我在容器“x”中有 4 个 div(其中包含图像)和另一个容器“y”来拖放这些 div那个容器'y',但是如果我将它们全部拖到那里,第一个 div 只会设置到左上角,其余的设置在它们下面(或者如果我将它们的显示设置为内联块,则它们并排)。所以,我想让这些 div 在我拖入的容器“y”上移动,以便在需要的地方移动它们。 (它们也可以调整大小)。
拖放 JavaScript 和 HTML 代码(不包括 CSS 和一些不必要的 HTML 代码)是这样的:
function allowDrop(ev) {
ev.preventDefault();
}
function drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
ev.dataTransfer.dropEffect = "move";
}
function drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
<div id="images-container" ondrop="drop(event)" ondragover="allowDrop(event)">
<div class="resize" style="background: url('images/photo-1.jpg') center no-repeat; background-size: cover; background-position: center center;" id="drag1" draggable="true" ondragstart="drag(event)">
</div>
<div class="resize" style="background: url('images/photo-2.jpg') center no-repeat; background-size: cover; background-position: center center;" id="drag2" draggable="true" ondragstart="drag(event)">
</div>
<div class="resize" style="background: url('images/photo-3.jpg') center no-repeat; background-size: cover; background-position: center center;" id="drag3" draggable="true" ondragstart="drag(event)">
</div>
<div class="resize" style="background: url('images/photo-4.jpg') center no-repeat; background-size: cover; background-position: center center;" id="drag4" draggable="true" ondragstart="drag(event)">
</div>
</div>
<div id="gallery" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
我查看了 W3schools 的 this 文章,但它只适用于一个 div 元素,因为它是使用 ID 构建的,但是我可以用这段代码做什么才能将它用于多个 div 和我猜的类?如果有其他方法,我会很高兴听到一些关于它的建议,尽管是在纯 JavaScript 中。
谢谢。
【问题讨论】:
-
你回答了你自己的问题,这里有工作示例如何做到这一点:w3schools.com/howto/howto_js_draggable.asp 只需添加另一个具有不同 id 的 div
-
@Rainmx93 我知道,我完全理解,但为此,我应该为 4 个不同的 ID 提供 4 个函数,但我想为所有 div 提供一个函数,可能具有相同的类或具有查询选择器,但我不确定如何更改函数以使用给定 div 的类。任何建议将不胜感激。
标签: javascript drag-and-drop draggable