zoukankan      html  css  js  c++  java
  • 拖动基本实现

    拖动相关事件:dragstart, drag, dragenter, dragleave, dragover, drop, dragend.

    如下图,将三个圆拖动到矩形里面:

     

    HTML结构:

    <div class="row">
        <div class="span-6 dragTarg"></div>
    </div>
    <div class="row">
        <div class="span-6 dragItems">
            <div draggable="true" class="red"></div>
            <div draggable="true" class="blue"></div>
            <div draggable="true" class="green"></div>
        </div>
    </div>
    

    CSS:

    .row{
      margin: 10px;
    }
    
    .row .dragTarg{
       100px;
      height: 40px;
      background-color: #ccc;
    }
    .dragTarg div,
    .dragItems div{
       30px;
      height: 30px;
      border-radius: 15px;
      display: inline-block;
    }
    
    .red{background-color: #f00}
    .blue{background-color: #00f}
    .green{background-color: #0f0}

    JS:

    var circles = document.querySelectorAll('.dragItems div');
    for(var i=0;i<circles.length;i++){
      var circle = circles[i];
      circle.addEventListener('dragstart',onDragStart,false);
      circle.addEventListener('dragend',onDragEnd,false);
    }
    
    function onDragStart(e){
      this.style.border = '5px solid #000';
     //拖动某个圆形时,保存其样式名(或者id),以便后面能通过样式名找到。
      e.dataTransfer.setData('text',this.className);
    }
    function onDragEnd(e){
      this.style.border = 'none';
    }
    
    var dragTarg = document.querySelector('.dragTarg');
    dragTarg.addEventListener('dragenter', onDragEnter);
    function onDragEnter(e){
      this.style.border = '3px #aaa dashed';
    }
    
    dragTarg.addEventListener('dragover', onDragOver);
    function onDragOver(e){
       //只有阻止了dragover的默认行为,才会有drop事件发送出来。
      //否则无法监听到drop事件。
      e.preventDefault();
    }
    dragTarg.addEventListener('drop',onDrop,false);
    function onDrop(e){
      //e.preventDefault();
      
      var className = e.dataTransfer.getData('text');
     //根据保存的样式名,找到拖动的圆形
      var ele = document.querySelector('.dragItems .'+className);
     //将其添加到矩形中,即原来的圆被移走。
      this.appendChild(ele);
    }
  • 相关阅读:
    UART协议
    芯片时钟体系(take example as s3c2440)
    PCIe协议
    I2C协议
    SPI协议
    嵌入式相关术语列表
    TreeView控件数据绑定之:数据库数据递归绑定
    连接SQL Server 数据库的三种方式
    JS小功能之:五角星评论
    MVC学习之开发技巧总结(1)
  • 原文地址:https://www.cnblogs.com/ywxgod/p/6124226.html
Copyright © 2011-2022 走看看