利用JavaScript實現簡單的拖動層(只使用於IE)

來源:互聯網
上載者:User
本來在項目中不是必須的,但是我覺得如果能實現拖動給客戶感覺會更好一點,所以就開始寫一個拖動,其實網上有很多可以拿過來就用的源碼,但是總想自己寫一個,因為我覺得大部分代碼寫的太多了。所以就參考他們的,寫我自己的。
實際上就是用了三個事件函數
1.onmousedown 2.onmousemove 3.onmouseup
利用這三個事件函數就可以了,代碼如下:

    <script type="text/javascript">
        var x,y;
        function mousedown(obj)
        {
            obj.onmousemove = mousemove;
            obj.onmouseup = mouseup;
            
            oEvent = window.event ? window.event : event;
            x = oEvent.clientX;
            y = oEvent.clientY;
        }
        function mousemove()
        {
            oEvent = window.event ? window.event : event;
            var _top = oEvent.clientY - y + parseInt(this.style.top) + "px";
            var _left = oEvent.clientX - x + parseInt(this.style.left) +"px";
            this.style.top = _top;
            this.style.left = _left;
            x =  oEvent.clientX;
            y =  oEvent.clientY
        }
        function mouseup()
        {
            this.onmousemove = null;
            this.onmouseup = null;
        }
    </script>

html部分是
<div id="div1" style="width: 100px; height: 100px; top:10px; left:15px; cursor:move; background-color:Blue; position:absolute;" onmousedown="mousedown(this)" > </div>

注意事項:
1.要拖動的div一定要把position屬性設定absolute;否則按流布局的話無法實現拖動。
2.一定要設定top和left的初始值,否則當onmousemove事件觸發時就會報錯!

存在問題:
1.只能在IE裡用,沒有實現跨瀏覽器。
2.在拖動過程中如果滑鼠快速移動,就會移出到被拖動層的外面,這時如果鬆開滑鼠,沒有清空onmousemove事件,所以當滑鼠指向時就會跟著滑鼠移動。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.