滑鼠拖拽事件

來源:互聯網
上載者:User

標籤:改變   head   meta   fse   client   nbsp   The   htm   寬度   

滑鼠拖拽事件:

    • 滑鼠按下事件;
    • 滑鼠移動事件;
    • 滑鼠抬起事件。
    • 移動前移動後滑鼠在元素上的相對位置不發生改變,所以要記錄滑鼠在元素上的位置。
      在移動的時候需要記錄元素的位移數
      最後需要判斷邊界,當元素到達邊界時就不能再移動了
      最後需要 把屬性重新設定一下,否則元素不能被拖拽。

 

<html>    <head>        <meta charset="utf-8" />        <title></title>        <style>            *{                margin:0;                padding:0;                            }            div{                width:100px;                height:100px;                background:red;                position:absolute;  /* 對元素進行定位*/                left:0;                top:0;            }        </style>    </head>        <body>        <div></div>    </body>    <script>        var oDiv = document.getElementsByTagName(‘div‘)[0]        var body = document.getElementsByTagName(‘body‘)[0]                // 計算最大位移距離(後期判斷邊界時要用到)  oDiv.offsetWidth:表示div的寬度        var maxLeft = window.innerWidth - oDiv.offsetWidth        var maxTop = window.innerHeight - oDiv.offsetHeight                // 滑鼠按下事件        oDiv.onmousedown = function (e) {            var ev = e || event            //記錄滑鼠在元素上的位置            var posX = ev.clientX-oDiv.offsetLeft            var posY = ev.clientY-oDiv.offsetTop            //滑鼠移動事件            body.onmousemove = function(e){                var ev = e || event                //計算元素的位移                var left = ev.clientX-posX                var top = ev.clientY-posY                //判斷邊界                if (left<0){                    left=0                }else if (left>maxLeft){                    left=maxLeft                }                if (top<0){                    top=0                }else if(top>maxTop){                    top=maxTop                }                                //重新設定屬性                oDiv.style.left = left + "px"                oDiv.style.top = top + "px"            }                //滑鼠抬起事件            body.onmouseup = function(){                body.onmousemove = null                body.onmouseup = null            }        }            </script></html>

 

滑鼠拖拽事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.