HTML5 实验报告六(拖放)

在Windows等操作系统中均包含回收站功能,用户可以直接将不需要的文件拖拽并放置到桌面回收站图标上以实现文件删除。使用HTML5拖放API相关技术,在网页上实现仿回收站的类似效果。用户通过拖拽可以将页面上的元素放置到回收站中删除。最终效果图如图所示。

思路:文件拖拽与回收功能的实现

 1,文件拖拽的实现

<div class="folder" draggable="true" >文件1</div>

将回收站设置为可放置区域

<div id="recycle" ondragover="allowDrop(event)" ></div>
 //ondragover事件回调函数
    function allowDrop(ev) {
        //解禁当前元素为可放置被拖拽元素的区域
        ev.preventDefault();
    }

 2,回收功能的实现

<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);
    }

 

 

 

  • 源代码如下: 
  1. <!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文件(recycle)源代码:

    /*设置用于放置文件夹的区域样式*/
    div#container{
        border: 1px solid;
        width: 300px;
        height: 250px;
        float: left;
    }
    /*设置文件夹样式*/
    .folder{
        text-align: center;
        float: left;
        margin: 20px;
        background: url(../img/folder.png) no-repeat;
        width: 100px;
        height: 80px;
        line-height: 80px;
    }
    /*设置回收站样式*/
    div#recycle {
        width: 200px;
        height: 200px;
        float: left;
        text-align: center;
        background: url(../img/recycle.jpg) no-repeat;
        margin: 30px;
    }

     

    追加文件夹和回收站的图片:

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是一个简单的HTML 5拖放实例: ```html <!DOCTYPE html> <html> <head> <title>HTML 5拖放实例</title> <style> #div1 { width: 200px; height: 200px; padding: 10px; border: 1px solid black; } </style> <script> function allowDrop(event) { event.preventDefault(); } function drag(event) { event.dataTransfer.setData("text", event.target.id); } function drop(event) { event.preventDefault(); var data = event.dataTransfer.getData("text"); event.target.appendChild(document.getElementById(data)); } </script> </head> <body> <h2>拖动这个文本框到方框中</h2> <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div> <br> <input type="text" id="drag1" draggable="true" ondragstart="drag(event)"> </body> </html> ``` 在这个实例中,我们创建了一个文本框和一个方框,文本框可以被拖动到方框中。实现这个功能的关键是使用了HTML 5的拖放事件,包括`ondragstart`、`ondragover`和`ondrop`事件。 当我们开始拖动文本框时,会触发`ondragstart`事件,这个事件中我们使用了`event.dataTransfer.setData()`方法设置了数据类型和数据内容。在这个例子中,我们将数据类型设为"text",数据内容为文本框的id。 当我们将文本框拖动到方框上时,会触发`ondragover`事件。在这个事件中,我们使用了`event.preventDefault()`方法来防止默认的操作(例如在浏览器中打开被拖动的元素)发生。 当我们在方框中放下文本框时,会触发`ondrop`事件。在这个事件中,我们使用了`event.preventDefault()`方法来防止默认的操作(例如在浏览器中打开被拖动的元素)发生。然后,我们使用`event.dataTransfer.getData()`方法获取了被拖动元素的id,并将其添加到方框中。 这个实例只是一个简单的演示,但是HTML 5的拖放功能非常强大,可以在实际的应用中发挥很大的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值