zoukankan      html  css  js  c++  java
  • Html——拖放

    设置元素为可拖放

    首先,为了使元素可拖动,把 draggable 属性设置为 true :

    <img draggable="true" />

    拖动什么 - 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()

    进行放置 - 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")
    • 把被拖元素追加到放置元素(目标元素)中

    实例

    <!DOCTYPE html>
    <html>
    <head>
    <title>Html5 拖放</title>
    <style type="text/css">
    #div1 {
    488px;
    height: 300px;
    padding: 10px;
    border: 2px solid blue;
    }
    </style>
    <script type="text/javascript">
    function drag(ev) {
    ev.dataTransfer.setData("Text", ev.target.id);
    }
    function allowDrop(ev) {
    ev.preventDefault();
    }
    function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("Text");
    ev.target.appendChild(document.getElementById(data));
    }
    </script>
    </head>

    <body>
    <p>请把狗狗的图片拖放到矩形中:</p>
    <div id="div1" ondragover="allowDrop(event)" ondrop="drop(event)"></div>
    <br>
    <img id="drag1" alt="w3c图片" src="../images/dog.bmp" draggable="true"
    ondragstart="drag(event)">
    </body>
    </html>

    来回拖放图片

    <!DOCTYPE html>
    <html>
    <head>
    <title>来回拖放图片</title>
    <style type="text/css">
    div {
    300px;
    height: 200px;
    margin: 10px;
    padding: 20px;
    border: 2px solid;
    margin: 10px;
    }

    #div1 {
    border-color: red;
    }

    #div2 {
    border-color: blue;
    }
    </style>
    <script type="text/javascript">
    function drag(ev) {
    ev.dataTransfer.setData("dragId", ev.target.id);
    //alert("dd:"+ev.dataTransfer.getData("dragId"));
    }
    function allowDrop(ev) {
    ev.preventDefault();
    }
    function drop(ev) {
    ev.preventDefault();
    var data = ev.dataTransfer.getData("dragId");
    ev.target.appendChild(document.getElementById(data));
    }
    </script>
    </head>

    <body>

    <p>在两个方框中任意拖放狗狗:</p>
    <div id="div1" ondragover="allowDrop(event)" ondrop="drop(event);">
    <img id="img1" alt="狗狗图片" src="../images/dog.bmp" draggable="true"
    ondragstart="drag(event)">
    </div>
    <div id="div2" ondragover="allowDrop(event)" ondrop="drop(event);"></div>
    </body>
    </html>

  • 相关阅读:
    统计nginx日志里访问次数最多的前十个IP
    while 格式化输出 运算符 字符编码
    Python 软件安装
    Python 基础
    Typora 基础的使用方法
    Django ORM (四) annotate,F,Q 查询
    Django 惰性机制
    Django ORM (三) 查询,删除,更新操作
    Django ORM (二) 增加操作
    Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
  • 原文地址:https://www.cnblogs.com/Defry/p/4313848.html
Copyright © 2011-2022 走看看