【发布时间】:2016-03-27 11:02:32
【问题描述】:
我一直在做一个需要 HTML5 拖放的项目,我被一些可能很容易实现但我似乎找不到解决方案的事情困住了。
基本上我有一些可拖动的元素和一些放置区域。因为它总是更容易用一个工作示例来解释,所以我做了这个简单的 JSFIDDLE
现在您可以将任何元素拖入任何放置区域或根据需要将它们移出,但我想要实现的是让橙色框仅放置在任何绿色区域中(并忽略蓝色区域...如果你把它放在那里,让它回到原来的位置),红色的盒子正好放在蓝色的盒子里(忽略绿色的)。
任何人都可以帮助我或提示我解决此问题的方法吗?
function DragOver(ev) {
ev.preventDefault();
}
function Drag(ev) {
ev.dataTransfer.setData("text", ev.target.id);
}
function Drop(ev) {
ev.preventDefault();
var data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
var elemens = document.querySelectorAll('.draggable');
[].forEach.call(elemens, function(elem) {
elem.addEventListener('dragover', DragOver, false);
elem.addEventListener('drop', Drop, false);
});
#divContenedor {
width: 950px;
height: 500px;
}
#div1,
#div2,
#div3 {
width: 350px;
height: 70px;
border: 1px solid #aaaaaa;
background-color: green;
}
#div4 {
width: 350px;
height: 70px;
border: 1px solid #aaaaaa;
background-color: blue;
}
<p>
Drag&drop testing</p>
<div id="divContenedor" class="draggable" style="background-color: yellow; width: 100%; float: left; position: relative;">
<div id="drag1" draggable="true" ondragstart="Drag(event)" style="width: 336px; height: 69px; background-color: orange; cursor: move;">1</div>
<div id="drag2" draggable="true" ondragstart="Drag(event)" style="width: 336px; height: 69px; background-color: orange; cursor: move;">2</div>
<div id="drag3" draggable="true" ondragstart="Drag(event)" style="width: 336px; height: 69px; background-color: red; cursor: move;">3</div>
</div>
<div style="position: absolute; top: 100px; left: 500px;">
<div id="div1" class="draggable" ></div>
<br />
<div id="div2" class="draggable" ></div>
<br />
<div id="div3" class="draggable" ></div>
<br />
<div id="div4" class="draggable" ></div>
</div>
使用@Amen 解决方案更新JSFIDDLE。
【问题讨论】:
标签: javascript html drag-and-drop draggable