仿回收站效果的设计与实现
功能要求:
使用HTML5拖放API相关技术,在网页上实现仿回收站的类似效果。用户通过拖拽可以将页面上的元素放置到回收站中删除。
实现效果:
一、界面设计核心技术概括
1.使用<div>
标签划分区域
1)文件展示区域
2)回收站区域
2.使用<div>
标签制作示例文件
2)4个示例文件
二、文件拖拽与回收功能的实现
1.文件拖拽的实现
<div class="folder" draggable="true" >文件1</div>
2.将回收站设置为可放置区域
<div id="recycle" ondragover="allowDrop(event)" ></div>
//ondragover事件回调函数
function allowDrop(ev) {
//解禁当前元素为可放置被拖拽元素的区域
ev.preventDefault();
}
3.回收功能的实现
<div id="file1" class="folder" draggable="true" ondragstart="drag(event) " >文件1</div>
//ondragstart事件回调函数
function drag(ev) {
//设置传递的内容为被拖拽元素的id名称,数据类型为纯文本类型
ev.dataTransfer.setData("text/plain", ev.target.id);
}
<div id="recycle" ondragover="allowDrop(event)" ondrop="drop(event)" ></div>
//ondrop事件回调函数
function drop(ev) {
ev.preventDefault(); //解禁当前元素为可放置被拖拽元素的区域
var id = ev.dataTransfer.getData("text"); //获取当前被放置的元素id名称
var folder = document.getElementById(id); //根据id名称获取元素对象
//获取文件夹区域并删除该元素对象
document.getElementById("container").removeChild(folder);
}
三、完整代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>HTML5拖放API之回收站效果</title>
<link rel="stylesheet" href="css/recycle.css">
</head>
<body>
<h3>HTML5拖放API之回收站效果</h3>
<hr />
<!--文件展示区域-->
<div id="container">
<div id="file1" class="folder" draggable="true" ondragstart="drag(event)">
文件1
</div>
<div id="file2" class="folder" draggable="true" ondragstart="drag(event)">
文件2
</div>
<div id="file3" class="folder" draggable="true" ondragstart="drag(event)">
文件3
</div>
<div id="file4" class="folder" draggable="true" ondragstart="drag(event)">
文件4
</div>
</div>
<!--回收站区域-->
<div id="recycle" ondragover="allowDrop(event)" ondrop="drop(event)"></div>
<script>
//ondragstart事件回调函数
function drag(ev) {
//设置传递的内容为被拖拽元素的id名称,数据类型为纯文本类型
ev.dataTransfer.setData("text/plain", ev.target.id);
}
//ondragover事件回调函数
function allowDrop(ev) {
//解禁当前元素为可放置被拖拽元素的区域
ev.preventDefault();
}
//ondrop事件回调函数
function drop(ev) {
//解禁当前元素为可放置被拖拽元素的区域
ev.preventDefault();
//获取当前被放置的元素id名称
var id = ev.dataTransfer.getData("text");
//根据id名称获取元素对象
var folder = document.getElementById(id);
//获取文件夹区域并删除该元素对象
document.getElementById("container").removeChild(folder);
}
</script>
</body>
</html>
备注:CSS代码见附件
https://download.csdn.net/download/YQEMMMM/12982765