话不多说,我们直接看示例

示例一:利用UL标记拖放多个元素

代码如下:

html5css3拖放设计若何应用HTML5实现多个元素的拖放功效 Ruby

ListDragDrop.html

<!DOCTYPE html>

<html>

<head>

<meta charset=\"大众utf-8\公众 />

<title></title>

<link rel=\公众stylesheet\"大众 href=\"大众ListDragDrop.css\"大众/>

<script>

function load() {

var delbox = document.getElementById('del');

delbox.addEventListener('dragover', onDragOver, false);

delbox.addEventListener('drop', onDrop, false);

var elems = document.querySelectorAll('ul#list1 > li');

for (var i = 0; i < elems.length; i++) {

el = elems[i];

el.setAttribute('draggable', 'true');

el.addEventListener('dragstart', onDragStart, false);

}

}

function onDragStart(e) {

e.dataTransfer.effectAllowed = 'copy';

e.dataTransfer.setData('text', this.id);

}

function onDragOver(e) {

e.preventDefault();

}

function onDrop(e) {

if (e.stopPropagation) e.stopPropagation();

var eid = e.dataTransfer.getData('text');

var elem = document.getElementById(eid);

elem.parentNode.removeChild(elem);

}

</script>

</head>

<body onload=\公众load();\公众>

<div id=\"大众del\公众>删除</div>

<ul id=\公众list1\公众>

<li id=\公众1\"大众>海豚</li>

<li id=\公众2\"大众>鲸鱼</li>

<li id=\"大众3\公众>企鹅</li>

<li id=\"大众4\"大众>北极熊</li>

<li id=\"大众5\"大众>雪狐</li>

</ul>

</ul>

</body>

</html>

ListDragDrop.css

#del{

width:120px;

height:60px;

border: solid 2px #ff6a00;

}

ul#list1 > li {

display: block;

width: 150px;

border: 1px solid #808080;

}

解释:

加载页面时实行加载功能。
load函数中的以下代码将dragover和drop事宜分配给[Delete]的div。
当元素被拖动到Delete框时,会调用onDragOver函数,当它被删除时,会调用onDrop函数。

var delbox = document.getElementById('del');

delbox.addEventListener('dragover', onDragOver, false);

delbox.addEventListener('drop', onDrop, false);

调用querySelectorAll方法以获取ul标记中的li元素。
for循环反复处理中获取的元素数组,并将每个元素的“draggable”属性设置为true。
此过程将其设置为可拖动工具。
它还分配了一个dragstart事宜。

var elems = document.querySelectorAll('ul#list1 > li');

for (var i = 0; i < elems.length; i++) {

el = elems[i];

el.setAttribute('draggable', 'true');

el.addEventListener('dragstart', onDragStart, false);

}

拖动列表项时,将调用以下onDragStart函数。
调用dataTransfer工具的setData方法以在dataTransfer工具中存储元素的ID。

function onDragStart(e) {

e.dataTransfer.effectAllowed = 'copy';

e.dataTransfer.setData('text', this.id);

}

当在拖放区域中拖动列表中的项目时,将调用以下onDragOver函数。
由于DragOver没有特殊的处理,因此它调用PreventDefault方法来取消事宜。

function onDragOver(e) {

e.preventDefault();

}

如果列表的项目在拖放区域内被删除,则可以调用onDrop函数。
调用stopPropagation方法取消事宜的处理。
然后,我们从dataTransfer工具中获取ID。
通过取得ID,您可以得到丢弃区域中丢弃的元素。
调用getElementById方法并从ID中获取LI标记的工具。
通过利用获取的LI工具的paerntNode属性访问父节点,调用removeChild方法,删除被丢弃的列表的项目。

function onDrop(e) {

if (e.stopPropagation) e.stopPropagation();

var eid = e.dataTransfer.getData('text');

var elem = document.getElementById(eid);

elem.parentNode.removeChild(elem);

}

运行结果:

利用Web浏览器显示上述HTML文件。
将显示如下所示的效果。

可以拖动页面底部列表中的项目。
比如拖动“企鹅”这一项,将其拖动到删除区域,然后下面列表项中就没有第三项“企鹅”了,详细效果如下图所示

拖动其他项都是一样的效果,五项都可以删除。

以上便是如何利用HTML5实现多个元素的拖放功能的详细内容,更多请关注其它干系文章!

更多技巧请《转发 + 关注》哦!