javascript实现拖拽弹框高度,可调节弹框大小

1.页面刚开始加载时弹框高度比较小,但是因为数据的缘故,如果要看清全部的数据,只能给弹框的高度设置高一些,因为这就要求弹框的高度可以拖拽,实现代码如下:(原生js实现)

HTML代码:

<div id="drag">
    <div class="resizeT"></div>
</div>

CSS代码:

body{
            width:100%;
            height:1550px;
            overflow: hidden;
        }
        * {
            padding: 0;
            margin: 0;
        }
        #drag {
            position: absolute;
            bottom: 0;
            background: #e9e9e9;
            width: 100%;
            height: 50vh;
            min-height: 30px;
        }
        .resizeT{
            position: absolute;
            width: 100%;
            height: 5px;
            top: 0;
            z-index: 2;
            cursor:n-resize;
        }

JS代码:

//下面定义了一个对象,直接调用对象里面的方法即可
var get = {
            byId: function (id) {
                return typeof id === "string" ? document.getElementById(id) : id
            },
            byClass: function (sClass, oParent) {
                var aClass = [];
                var reClass = new RegExp("(^| )" + sClass + "( |$)");
                var aElem = this.byTagName("*", oParent);
                for (var i = 0; i < aElem.length; i++) reClass.test(aElem[i].className) && aClass.push(aElem[i]);
                return aClass
            },
            byTagName: function (elem, obj) {
                return (obj || document).getElementsByTagName(elem)
            }
        };
        var dragMinHeight = 50;
        function resize(oParent, handle, isLeft, isTop, lockX, lockY) {
            handle.onmousedown = function (event) {
                var event = event || window.event;
                var disY = event.clientY - handle.offsetTop;
                console.log(handle.offsetTop);
                console.log(disY);
                var iParentTop = oParent.offsetTop;
                var iParentHeight = oParent.offsetHeight;
                console.log(iParentHeight+" "+iParentTop);
                document.onmousemove = function (event) {
                    var event = event || window.event;
                    var iT = event.clientY - disY;
                    var maxH = document.documentElement.clientHeight - oParent.offsetTop - 2;
                    var iH = isTop ? iParentHeight - iT : handle.offsetHeight + iT;
                    isTop && (oParent.style.top = iParentTop + iT + "px");
                    iH < dragMinHeight && (iH = dragMinHeight);
                    iH > maxH && (iH = maxH);
                    lockY || (oParent.style.height = iH + "px");
                    if ( isTop && iH == dragMinHeight) document.onmousemove = null;
                    return false;
                };
                document.onmouseup = function () {
                    document.onmousemove = null;
                    document.onmouseup = null;
                };
                return false;
            }
        };
        window.onload = window.onresize = function () {
            var oDrag = document.getElementById("drag");
            var oT = get.byClass("resizeT", oDrag)[0];
            resize(oDrag, oT, false, true, true, false);
        }

上面代码的实现效果就是:
鼠标移动到拖拽区域,弹框的高度可以进行调节。。

2.除了原生javascript代码,我们也可以用一些框架来实现这种效果,easyui就可以哦,我已经尝试过了,代码就不附加了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值