zoukankan      html  css  js  c++  java
  • web拖动Drag&Drop原理

    < html >
    < head >
    < title > Page Title </ title >
    < style >

    .drag 
    {
        cursor
    :  move ;
    }




    .box 
    {
        margin
    :  0px ;
        width
    :  200px ;
        border
    :  1px solid #ccc ;
    }

    .box h3.title 
    {
        margin
    :  0px ;
        width
    :  100% ;
        background-color
    :  #ccc ;
    }

    .box div.content 
    {
        margin
    :  0px ;
        width
    :  100% ;
        text-align
    :  left ;
    }

    </ style >

    < script  type ="text/javascript" >
    // GreatGhoul
    //
    兼容ff, ie
    //
    要拖动的对象的title设置为'dragable'
    //
    拖动点的class设置为'drag',拖动点必须为可拖动对象的子节点

    var  DragableObj  =   {
        handle: 
    null ,
        dx: 
    0 ,
        dy: 
    0 ,

        init: 
    function (e)  {
            e 
    =  e  ||  event;
            
    this .handle  =  e.target  ||  e.srcElement;
            
    if  ( this .handle.className.indexOf( ' drag ' ==   - 1 return ;
             while  ( this .handle.tagName  !=   ' HTML '   &&   this .handle.title  !=   " dragable "
               {
                
    this .handle  =   this .handle.parentNode  ||   this .handle.parentElement;
            }

            
    if  ( this .handle.title  !=   ' dragable ' return ;
            
    this .handle.style.position  =   ' relative ' ;
            
    this .dx  =  parseInt( this .handle.style.left  +   0 -  e.clientX;
            
    this .dy  =  parseInt( this .handle.style.top   +   0 -  e.clientY;
            document.onmousemove 
    =  DragableObj.drag;
        }
    ,
        drag: 
    function (e)  {
            e 
    =  e  ||  event;
            
    if  ( this .handle  !=   null {
                
    this .handle.style.left  =  (e.clientX  +   this .dx)  +   ' px ' ;
                
    this .handle.style.top   =  (e.clientY  +   this .dy)  +   ' px ' ;
            }

        }
    ,
        drop: 
    function (e)  {
            
    this .handle  =   null ;
            document.onmousemove 
    =   null ;
        }

    }
    ;
    document.onmousedown 
    =  DragableObj.init;
    document.onmouseup   
    =  DragableObj.drop;
    document.onselectstart 
    =   function (e)  {
        e 
    =  e  ||  event;
        eo 
    =  e.target  ||  event.srcElement;
        
    if  (eo.className.indexOf( ' drag ' !=   - 1 return   false ;
    }
    ;

    </ script >
    </ head >
    < body >
    < br > 例1:
    < div  class ="box"  title ="dragable" >
    < h3  class ="drag title" >拖动标题 </ h3 >
    < div  class ="content" >内容 </ div >
    </ div >

    < br > 例2:
    < div  class ="drag"  title ="dragable" > 拖动我 </ div >

    </ body >
    </ html >
     
  • 相关阅读:
    【前端知识体系-JS相关】组件化和React
    【前端知识体系-JS相关】虚拟DOM和Diff算法
    【前端知识体系-JS相关】ES6专题系列总结
    【前端开发环境】前端使用GIT管理代码仓库需要掌握的几个必备技巧和知识点总结
    webpack代码分离CommonsChunkPlugin插件的使用(防止重复)
    webpack管理输出
    webpack管理资源(loader操作)
    window启动webpack打包的三种方法
    echarts地图map城市间如何连线
    echarts水球图编写
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470636.html
Copyright © 2011-2022 走看看