zoukankan      html  css  js  c++  java
  • H5拖动实现代码

    原理以后有空再说现在嘛先上代码。。。。

     1 *{margin: 0;}
     2     html,body {
     3         width: 100%;
     4         height: 100%;
     5         margin: 0;
     6     }
     7     #dragBoxContainer{
     8         width: 150px;
     9         padding:10px;
    10         background:#C1C4E0;
    11     }
    12     .dragBox{/* 拖动框 */
    13         text-align: center;
    14         background:#FFFFFF;
    15         border: 1px solid #999999;
    16         padding: 5px;
    17         margin: 10px 0;
    18         cursor: move;
    19         word-break: break-word;
    20         position: relative;
    21     }
    22     #dragPlaceholder{/* 占位符位 */
    23         width: 150px;
    24         height: 33px;
    25         border:1px dotted red;
    26     }
    27     .dragHide{
    28         /*
    29         left: -9999px;
    30         */
    31         opacity: 0;
    32         height: 0;
    33         padding: 0;
    34         margin: 0;
    35     }
     1 <input type="button" value="添加" id="add">
     2 <p id="dragthis">拖动元素是:</p>
     3 <p>
     4     <span id="dragtarget">目标元素是:</span>
     5     <span id="dragtarget_Height">目标中间高度:</span>
     6 </p>
     7 <p id="mouseHeight">鼠标高度是:</p>
     8 <p id="Tips_placeholder">占位符位置在:</p>
     9 
    10 <div id="dragBoxContainer"></div>
     1     var drag_this=null;//当前拖动的元素
     2     var drag_target=null;//悬停在那个元素
     3     var DOMnum=0;
     4     $("#add").click(function add(e){
     5         DOMnum++;
     6         $("#dragBoxContainer").append('<div class="dragBox" draggable="true" ondragstart="handleDrag(event)">00'+DOMnum+'</div>');
     7         var cols = document.querySelectorAll('.dragBox');
     8         [].forEach.call(cols, addDnDHandlers);
     9     });
    10     function handleDrag(e){
    11         e.dataTransfer.setData("Text"," ");//兼容火狐
    12     };
    13     function handleDragStart(e) {//(该方法只会触发一次)拖拽元素开始被拖拽的时候触发的事件,此事件作用在被拖曳元素上
    14         e = e || window.event;
    15         var target = e.target || e.srcElement;
    16         console.log("拖动元素瞬间触发");
    17         drag_this=target
    18         console.log(drag_this);
    19         $("#dragthis").html("拖动元素是:"+target.innerHTML);
    20         //$(target).addClass("dragHide");
    21     };
    22     function handleDragEnter(e) {//当拖曳元素进入目标元素的时候触发的事件,此事件作用在目标元素上
    23         e = e || window.event;
    24         var target = e.target || e.srcElement;
    25         console.log("进入目标元素");
    26         drag_target=target;
    27         //console.log(target);
    28         $("#dragtarget").html("目标元素是:"+target.innerHTML)
    29         //$(target).addClass("www");
    30     };
    31     function handleDragOver(e) {//拖拽元素正在目标元素上移动的时候触发的事件,此事件作用在目标元素上
    32         console.log("拖拽元素正在目标元素上移动");
    33         if (!$(drag_this).hasClass("dragHide")) {
    34             $(drag_this).addClass("dragHide");
    35         }
    36         //console.log({drag_this,drag_target});
    37         //var this_top=$(drag_this).offset().top;
    38         var target_top=$(drag_target).offset().top;//目标顶部高度
    39         var target_height=$(drag_target).height()*.5;//目标高
    40         //console.log({this_top,target_top});
    41         //console.log(target_top);
    42         var mouseHeight=e.pageY;//鼠标Y坐标
    43         $("#mouseHeight").html("鼠标高度是:"+mouseHeight)
    44         var judgeTop=target_top+target_height;//目标中间高度:
    45         console.log(target_top,target_height,judgeTop)
    46         $("#dragtarget_Height").html("目标中间高度:"+judgeTop)
    47 
    48         if(mouseHeight<=judgeTop){//
    49             var dragPlaceholder=$(drag_target).prev("#dragPlaceholder");   
    50             //console.log(dragPlaceholder)
    51             if (dragPlaceholder.length==0) {
    52                 $("#dragPlaceholder").remove();
    53                 $(drag_target).before('<div id="dragPlaceholder">我是占位符位</div>')
    54             }
    55             $("#Tips_placeholder").html("占位符位置在:上")
    56         }else{//
    57             var dragPlaceholder=$(drag_target).next("#dragPlaceholder");   
    58             if (dragPlaceholder.length==0) {
    59                 $("#dragPlaceholder").remove();
    60                 $(drag_target).after('<div id="dragPlaceholder">我是占位符位</div>')
    61             }
    62             $("#Tips_placeholder").html("占位符位置在:下")
    63         }
    64     };
    65     function handleDragLeave(e) {
    66         e = e || window.event;
    67         var target = e.target || e.srcElement;
    68         console.log("离开目标元素");
    69     };
    70     function handleDrop(e) {
    71         console.log("被拖拽的元素在目标元素上同时鼠标放开触发的事件");
    72     };
    73     function handleDragEnd(e) {
    74         console.log("鼠标释放了");
    75         e = e || window.event;
    76         var target = e.target || e.srcElement;
    77         //console.log(target);
    78 
    79         $("#dragPlaceholder").before(drag_this).remove();
    80         $(drag_this).removeClass("dragHide");
    81     };
    82     function add(e) {
    83         console.log("点击触发");
    84     };
    85     function addDnDHandlers(elem) {
    86         //elem.addEventListener('drag', handleDrag, false);
    87         elem.addEventListener('dragstart', handleDragStart, false);
    88         elem.addEventListener('dragenter', handleDragEnter, false)
    89         elem.addEventListener('dragover', handleDragOver, false);
    90         elem.addEventListener('dragleave', handleDragLeave, false);
    91         elem.addEventListener('drop', handleDrop, false);
    92         elem.addEventListener('dragend', handleDragEnd, false);
    93         elem.addEventListener('click', add, false);
    94     };
  • 相关阅读:
    Asp.Net页面导入和导出到EXCEL
    ASP.NET打包安装的制作方法
    asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
    aspx页面Repeater嵌套Repeater
    JAVASCRIPT校验大全
    SQL语句导入导出大全
    从DataView中生成Excel报表的方案
    用ajax实现dropdownlist多级联动实例
    ASP.NET结合存储过程写的通用搜索分页程序
    C#程序调用外部程序
  • 原文地址:https://www.cnblogs.com/konghaowei/p/9455077.html
Copyright © 2011-2022 走看看