zoukankan      html  css  js  c++  java
  • Html5 drag and drop

    <!DOCTYPE html>
    <html>
    <head>
      <title>.</title>
      <style type="text/css">
        #columns{ 380px; height: 120px; border: solid 1px #ccc;}
        .column{ 100px; height: 100px; line-height: 100px; text-align: center; margin: 10px; border: solid 1px #ccc; float: left;}
        .column.over {
          border: 2px dashed #000;
        }
      </style>
    </head>
    
    <body>
      <div id="columns">
        <div class="column" draggable="true">A</div>
        <div class="column" draggable="true">B</div>
        <div class="column" draggable="true">C</div>
      </div>
    
      <script>
    /*
    Drap and Drop Events:
    dragstart
    drag
    dragenter
    dragleave
    dragover
    drop
    dragend
    */
      var dragSrcEl = null;
    
      function handleDragStart(e) {
        dragSrcEl = this;
    
        e.dataTransfer.effectAllowed = 'move';
        e.dataTransfer.setData('text/html', this.innerHTML);
      }
    
      function handleDragOver(e) {
        if (e.preventDefault) {
          e.preventDefault(); // Necessary. Allows us to drop.
        }
    
        e.dataTransfer.dropEffect = 'move';  // See the section on the DataTransfer object.
    
        return false;
      }
    
      function handleDragEnter(e) {
        // this / e.target is the current hover target.
        this.classList.add('over');
      }
    
      function handleDragLeave(e) {
        this.classList.remove('over');  // this / e.target is previous target element.
      }
    
      function handleDrop(e) {
      // this/e.target is current target element.
    
      if (e.stopPropagation) {
        e.stopPropagation(); // Stops some browsers from redirecting.
      }
    
      // Don't do anything if dropping the same column we're dragging.
      if (dragSrcEl != this) {
        // Set the source column's HTML to the HTML of the column we dropped on.
        dragSrcEl.innerHTML = this.innerHTML;
        this.innerHTML = e.dataTransfer.getData('text/html');
      }
    
      return false;
    }
    
      function handleDragEnd(e) {
        // this/e.target is the source node.
    
        [].forEach.call(cols, function (col) {
          col.classList.remove('over');
        });
      }
    
      var cols = document.querySelectorAll('#columns .column');
      [].forEach.call(cols, function(col) {
        col.addEventListener('dragstart', handleDragStart, false);
        col.addEventListener('dragenter', handleDragEnter, false)
        col.addEventListener('dragover', handleDragOver, false);
        col.addEventListener('dragleave', handleDragLeave, false);
        col.addEventListener('drop', handleDrop, false);
        col.addEventListener('dragend', handleDragEnd, false);
      });
      </script>
    </body>
    
    </html>
    
    
    
  • 相关阅读:
    「考试」省选27
    「考试」省选26
    「考试」省选25
    $dy$讲课总结
    「笔记」$Min\_25$筛
    「考试」省选24
    「总结」多项式生成函数例题(4)
    「总结」多项式生成函数相关(4)
    「考试」省选23
    「总结」后缀3
  • 原文地址:https://www.cnblogs.com/laoquans/p/dnd.html
Copyright © 2011-2022 走看看