用jQuery實現拖動


  今天我用jQuery實現了簡單的物體拖放功能,已經設置的上下左右的臨界點,可以更具自己的需要設置限制區域,我這里設置的是document對象的高度和寬度。

原理很簡單就是:

1:獲取當前物體的偏移量,以便於之后的計算

2:獲取鼠標的當前位置坐標。

3:得到新的偏移量,保存下來

4:新的位置是用舊的坐標加上偏移量的該變量,就能計算出現在物塊的位置了。

限制當然也很簡單(我限制的寬高是當前瀏覽器頁面的寬高),用新的位置和最大最小去做判斷(我在代碼部分做了很明確的注釋),之后更具判斷的值來設定位置就可以實現為止的限制了

1:HTML部分

<div id="box"></div>

 

2:CSS部分

       * {
            margin: 0;
            padding: 0;
        }

        #box {
            position: absolute;
            top: 100px;
            left: 100px;

            width: 100px;
            height: 100px;

            background: orange;

 

3:JQuery部分

<script src="jquery-2.1.4.min.js"></script>
<script>
    $(function () {
        //創建小方塊的jquery對象
        var $box = $("#box");
        //創建小方塊的鼠標點按下事件
        $box.mousedown(function (event) {
            //獲取鼠標按下的時候左側偏移量和上側偏移量
            var old_left = event.pageX;//左側偏移量
            var old_top = event.pageY;//豎直偏移量

            //獲取鼠標的位置
            var old_position_left = $(this).position().left;
            var old_position_top = $(this).position().top;

            //鼠標移動
            $(document).mousemove(function (event) {
                var new_left = event.pageX;//新的鼠標左側偏移量
                var new_top = event.pageY;//新的鼠標豎直方向上的偏移量

                //計算發生改變的偏移量是多少
                var chang_x = new_left - old_left;
                var change_y = new_top - old_top;

                //計算出現在的位置是多少

                var new_position_left = old_position_left + chang_x;
                var new_position_top = old_position_top + change_y;
                //加上邊界限制
                if(new_position_top<0){//當上邊的偏移量小於0的時候,就是上邊的臨界點,就讓新的位置為0
                    new_position_top=0;
                }
                //如果向下的偏移量大於文檔對象的高度減去自身的高度,就讓它等於這個高度
                if(new_position_top>$(document).height()-$box.height()){
                    new_position_top=$(document).height()-$box.height();
                }
                //右限制
                if(new_position_left>$(document).width()-$box.width()){
                    new_position_left=$(document).width()-$box.width();
                }
                if(new_position_left<0){//左邊的偏移量小於0的時候設置 左邊的位置為0
                    new_position_left=0;
                }

                $box.css({
                    left: new_position_left + 'px',
                    top: new_position_top + 'px'
                })
            });
            $box.mouseup(function(){
                $(document).off("mousemove");
            })
        });
    })
</script>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM