美文网首页
HTML5拖放

HTML5拖放

作者: maskerII | 来源:发表于2019-04-14 01:52 被阅读0次
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>HTML5拖放</title>
        <style type="text/css">
            #div1 {width: 350px;height: 70px;padding: 10px;border: 1px solid #c3c3c3};
        </style>
    
    
        <style type="text/css">
            #div2,#div3 {
                float: left;padding: 10px;margin: 10px;width: 350px;height: 70px;border: 1px solid #c3c3c3;
            }
    
        </style>
    
        <script>
            function allowDrop(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));
    
            }
    
    
            /*dataTransfer.setData() 方法设置被拖数据的数据类型和值*/
    
            function drag1(ev) {
                ev.dataTransfer.setData("Text",ev.target.id);
            }
    
            /*ondragover 事件规定在何处放置被拖动的数据。
    默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
    这要通过调用 ondragover 事件的 event.preventDefault() 方法:*/
            function dragover1(ev) {
                ev.preventDefault();
            }
    
    
            /*调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
    通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
    被拖数据是被拖元素的 id ("drag1")
    把被拖元素追加到放置元素(目标元素)中*/
            function drop1(ev) {
                ev.preventDefault();
                var data = ev.dataTransfer.getData("Text");
                ev.target.appendChild(document.getElementById(data));
            }
    
    
        </script>
    
    </head>
    <body>
        <h4>将图片拖放到矩形框内</h4>
        <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
        <img src="http://www.runoob.com/images/logo.png" id="drag1" draggable="true" ondragstart="drag(event)" width="336" height="69">
    
       <h4>来回拖动图片</h4>
       <div id="div2" ondragover="dragover1(event)" ondrop="drop1(event)">
           <img src="http://www.runoob.com/images/logo.png" id="drag2" draggable="true" ondragstart="drag1(event)" width="336" height="69">
    
       </div>
    
       <div id="div3" ondragover="dragover1(event)" ondrop="drop1(event)"></div>
    
    </body>
    </html>
    
    
    1、HTML5 拖放(Drag 和 Drop)

    拖放(Drag 和 drop)是 HTML5 标准的组成部分。

    拖放
    拖放是一种常见的特性,即抓取对象以后拖到另一个位置。
    在 HTML5 中,拖放是标准的一部分,任何元素都能够拖放

    2、设置元素为可拖放

    首先,为了使元素可拖动,把 draggable 属性设置为 true :
    <img draggable="true">

    3、拖动什么 - ondragstart 和 setData()

    然后,规定当元素被拖动时,会发生什么。
    在上面的例子中,ondragstart 属性调用了一个函数,drag(event),它规定了被拖动的数据。
    dataTransfer.setData() 方法设置被拖数据的数据类型和值:
    function drag(ev)
    {
    ev.dataTransfer.setData("Text",ev.target.id);
    }
    在这个例子中,数据类型是 "Text",值是可拖动元素的 id ("drag1")。
    放到何处 - ondragover
    ondragover 事件规定在何处放置被拖动的数据。
    默认地,无法将数据/元素放置到其他元素中。如果需要设置允许放置,我们必须阻止对元素的默认处理方式。
    这要通过调用 ondragover 事件的 event.preventDefault() 方法:
    event.preventDefault()

    4、进行放置 - ondrop

    当放置被拖数据时,会发生 drop 事件。
    在上面的例子中,ondrop 属性调用了一个函数,drop(event):
    function drop(ev)
    {
    ev.preventDefault();
    var data=ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    代码解释:
    调用 preventDefault() 来避免浏览器对数据的默认处理(drop 事件的默认行为是以链接形式打开)
    通过 dataTransfer.getData("Text") 方法获得被拖的数据。该方法将返回在 setData() 方法中设置为相同类型的任何数据。
    被拖数据是被拖元素的 id ("drag1")
    把被拖元素追加到放置元素(目标元素)中

    相关文章

      网友评论

          本文标题:HTML5拖放

          本文链接:https://www.haomeiwen.com/subject/amofwqtx.html