zoukankan      html  css  js  c++  java
  • js原生拖拽

    <!DOCTYPE html>
    <html>
    <head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
    #div1{ 100px; height: 100px; background: red; position: absolute;}
    </style>
    <script type="text/javascript">

    //Cookie 没有做ie兼容
    function setCookie(name,value,iDay){ //写入Cookie
    var oDate = new Date();
    oDate.setDate(oDate.getDate()+iDay);
    document.cookie=name+'='+value+';expires='+oDate;
    };

    function getCookie(name){ //读取Cookie
    var arr=document.cookie.split('; ');
    var i = 0;
    for (i=0;i<arr.length;i++){
    var arr2=arr[i].split('=');
    if(arr2[0]==name){
    return arr2[1];
    }
    }
    return '';
    };

    function romoveCookie(name){ //移动Cookie
    setCookie(name,'1',-1);
    };


    window.onload = function(){
    var oDiv = document.getElementById('div1');
    var disX = 0; //用于记住鼠标按下时 左侧 鼠标和浏览器边框的距离 减去 div距离浏览器边框的距离
    var disY = 0; //用于记住鼠标按下时 顶部 鼠标和浏览器边框的距离 减去 div距离浏览器边框的距离
    var x = getCookie('x');
    var y = getCookie('y');
    if(x){
    oDiv.style.left=x+'px';
    oDiv.style.top=y+'px' ;
    }

    oDiv.onmousedown = function(ev){
    var oEvent = ev||event;
    disX=oEvent.clientX-oDiv.offsetLeft; //div内部鼠标距离div边框的左侧距离
    disY=oEvent.clientY-oDiv.offsetTop //div内部鼠标距离div边框的顶部距离
    document.onmousemove= function(ev){
    var oEvent = ev||event; //时间对象
    var l = oEvent.clientX-disX; //鼠标移动事件 移动时用鼠标距离浏览器的边框距离减去div内鼠标的距离
    var t = oEvent.clientY-disY;

    if (l<0){ //不能div脱离游览器当小于0是直接复制为0
    l=0;
    } else if (l>document.documentElement.clientWidth-oDiv.offsetWidth){
    l=document.documentElement.clientWidth-oDiv.offsetWidth;
    } //如何移动的距离 大于 浏览器宽度减去div本身的宽度 则把 浏览器宽度减去div本身的宽度赋值给鼠标移动的距离

    if (t<0){ //同理 就是顶部距离
    t=0;
    } else if (t>document.documentElement.clientHeight-oDiv.offsetHeight){
    t=document.documentElement.clientHeight-oDiv.offsetHeight;
    }

    oDiv.style.left=l+'px';
    oDiv.style.top=t+'px';
    };
    document.onmouseup = function(){
    document.onmousemove=null; //弹起时把移动事件清空
    document.onmouseup=null; //弹起时把按下事件清空
    setCookie('x',oDiv.offsetLeft,5); //利用Cookie记住位置当浏览器再次打开就能记录位置
    setCookie('y',oDiv.offsetTop,5);
    };
    return false; //把默认的鼠标按下时间屏蔽掉
    };
    };
    </script>
    </head>
    <body>
    <div id="div1"></div>
    </body>
    </html>

  • 相关阅读:
    X-Sequence
    Little Bishops uva861
    组合数学poj 1496 1850 同样的代码过两题
    Frame Stacking 框架堆叠
    ディクショナリテーブル
    財務会計関連(FI&CO)
    開発者向け
    ABAP 7.51 構文書き方変換について
    ABAP News for Release 7.51 – ABAP CDS Client Handling
    パフォーマンス分析関連
  • 原文地址:https://www.cnblogs.com/qibingshen/p/5281659.html
Copyright © 2011-2022 走看看