• html5: Drag and Drop


    Drag and Drop

    Drag and drop is a very common feature. It is when you "grab" an object and drag it to a different location.

    In HTML5, drag and drop is part of the standard: Any element can be draggable.

    <!DOCTYPE HTML>
    <html>
    <head>
    <style>
    #div1 {
      width: 350px;
      height: 70px;
      padding: 10px;
      border: 1px solid #aaaaaa;
    }
    </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));
    }
    </script>
    </head>
    <body>
    
    <p>Drag the W3Schools image into the rectangle:</p>
    
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    <br>
    <img id="drag1" src="img_logo.gif" draggable="true" ondragstart="drag(event)" width="336" height="69">
    
    </body>
    </html>

    Make an Element Draggable

    First of all: To make an element draggable, set the draggable attribute to true: 

    <img draggable="true">

    What to Drag - ondragstart and setData()

    Then, specify what should happen when the element is dragged.

    In the example above, the ondragstart attribute calls a function, drag(event), that specifies what data to be dragged.

    The dataTransfer.setData() method sets the data type and the value of the dragged data:

    function drag(ev) {
      ev.dataTransfer.setData("text", ev.target.id);
    }

    In this case, the data type is "text" and the value is the id of the draggable element ("drag1").

    Where to Drop - ondragover

    The ondragover event specifies where the dragged data can be dropped.

    By default, data/elements cannot be dropped in other elements. To allow a drop, we must prevent the default handling of the element.

    This is done by calling the event.preventDefault() method for the ondragover event

    Do the Drop - ondrop

    When the dragged data is dropped, a drop event occurs.

    In the example above, the ondrop attribute calls a function, drop(event):

    function drop(ev) {
      ev.preventDefault();
      var data = ev.dataTransfer.getData("text");
      ev.target.appendChild(document.getElementById(data));
    }

    Code explained:

    • Call preventDefault() to prevent the browser default handling of the data (default is open as link on drop)
    • Get the dragged data with the dataTransfer.getData() method. This method will return any data that was set to the same type in the setData() method
    • The dragged data is the id of the dragged element ("drag1")
    • Append the dragged element into the drop element
    <!DOCTYPE HTML>
    <html>
    <head>
    <style>
    #div1, #div2 {
      float: left;
      width: 100px;
      height: 35px;
      margin: 10px;
      padding: 10px;
      border: 1px solid black;
    }
    </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));
    }
    </script>
    </head>
    <body>
    
    <h2>Drag and Drop</h2>
    <p>Drag the image back and forth between the two div elements.</p>
    
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
      <img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1" width="88" height="31">
    </div>
    
    <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
    
    </body>
    </html>
     

  • 相关阅读:
    搭建 Linux 下 GitLab 服务器(转)
    sql语法:inner join on, left join on, right join on具体用法
    Android Studio之同一应用创建多个Activity(一)
    java环境变量配置
    老鸟的Python新手教程
    域名注冊以及域名解析设置
    Android在WebView上构建Web应用程序
    利用JasperReport+iReport进行Web报表开发
    android App Widgets
    多数据库下activiti的流程定义缓存问题
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/10717632.html
Copyright © 2020-2023  润新知