js實現鼠標拖拽縮放div

封裝爲了jq插件,如下

drag.js

;(function ($) {
    $.fn.dragDiv = function (options) {
        var def = {
            maxW:600,// 可伸縮的最大寬度
            minW:50// 可伸縮的最小寬度
        };// 參數默認值
        var opts = $.extend(def,options);// 擴展參數,使用默認值或傳參
        //設置最大/最小寬度
        var max_width = opts.maxW,
            min_width = opts.minW;

        //記錄鼠標相對left盒子x軸位置
        var mouse_x = 0;
        var left = $(this).parent('div')[0];

        //鼠標移動事件
        function mouseMove(e) {
            var e = e || window.event;
            var left_width = e.clientX - mouse_x;// 可伸縮div的寬度
            left_width = left_width < min_width ? min_width : left_width;
            left_width = left_width > max_width ? max_width : left_width;
            left.style.width = left_width + "px";
        }
        //終止事件
        function mouseUp() {
            document.onmousemove = null;
            document.onmouseup = null;
        }
        $(this).mousedown(function (e) {
            var e = e || window.event;
            //阻止默認事件
            e.preventDefault();
            mouse_x = e.clientX - left.offsetWidth;// 可伸縮div距離左側邊界的寬度
            document.onmousemove = function () {
                mouseMove()
            };
            document.onmouseup = function () {
                mouseUp()
            };
        })
    }
})(jQuery)

html文件

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>鼠標進行伸縮div</title>
    <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        .dragdom {
            background: #cccccc;
            width: 100px;
            height: 600px;
            margin: 0 auto;
            position: relative;
        }
        .dragdom .drag {
            border: 1px transparent solid;
            width: 0px;
            height: 100%;
            position: absolute;
            top: 0;
            right: 0;
            cursor: e-resize;
        }
    </style>
</head>
<body>
<div class="dragdom"><div class="drag"></div></div>
</body>
</html>
<script type="text/javascript" src="./jquery.min.js"></script>
<script type="text/javascript" src="./drag.js"></script>
<script>
    $(function () {
        $('.drag').dragDiv();
    })
</script>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章