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>
    
    
    
  • 相关阅读:
    Hanoi塔
    采药
    进制转换(大数)
    Load Balancing with NGINX 负载均衡算法
    upstream模块实现反向代理的功能
    epoll
    在nginx启动后,如果我们要操作nginx,要怎么做呢 别增加无谓的上下文切换 异步非阻塞的方式来处理请求 worker的个数为cpu的核数 红黑树
    粘性会话 session affinity sticky session requests from the same client to be passed to the same server in a group of servers
    负载均衡 4层协议 7层协议
    A Secure Cookie Protocol 安全cookie协议 配置服务器Cookie
  • 原文地址:https://www.cnblogs.com/laoquans/p/dnd.html
Copyright © 2011-2022 走看看