dom拉伸效果

目录

效果图

代码实现


场景:左边内容块可以像目录块拉伸宽度

效果图

 

代码实现

<!DOCTYPE html>
<html>
<head>
    <title>dom拉伸</title>
    <style>
        .box-line {
            position: absolute;
            top: 0;
            bottom: 0;
            right: -1.5px;
            width: 3px;
            height: 100%;
            cursor: e-resize;
            z-index: 99;
        }
        .box-flex {
            margin-top: 20px;
            height: 200px;
            display: flex;
            flex-flow: row;
            min-width: 1100px;
        }
        .box-right {
            position: relative;
            background-color: aquamarine;
            height: 100%;
            min-width: 160px; 
            border-right: 1px solid #666;
            box-sizing: border-box;
            max-width: 300px;
        }
        .box-left {
            flex: 1;
            background-color: rosybrown;
            height: 100%;
        }
    </style>
</head>
<body>
    <div class="box-flex">
        <div class="box-right" id="box">
            左边内容
            <div class="box-line" id="boxLine"></div>
        </div>
        <div class="box-left">右边内容</div>
    </div>
    <script>
            //通过ID找到元素 并且将它赋值给 变量oBox 
            var oBox = document.getElementById('box');
            var oBoxLine = document.getElementById('boxLine');
            //声明X 代表以后要存储的数据类型是字符串 Y同上
            var X='';
            //当鼠标点击盒子的时候触发 执行右边的函数   ev形参  向浏览器返回当前值 FireFox火狐 Chrome谷歌默认都是有一个值传进来的
            oBoxLine.onmousedown = function (ev){
                console.log('@@dowen', ev)
                //兼容IE和FireFox Chrome 只要一个为真就可以执行
                var iEvent=ev || event;
                //将盒子点击时获取的宽度赋值给W
                var W=oBox.offsetWidth;
                //将盒子点击时获取的鼠标X轴的值赋值给disX
                var disX=iEvent.clientX;
                //将盒子的鼠标点击时的距离左边的距离和盒子的宽度总和 赋值给disW
                var disxW=oBox.offsetLeft+W;
                console.log('disX', W, disX, disxW, oBox.offsetLeft)
                //这是判断是否当前点击的是盒子的四周
                //当盒子当前点击X轴的值大于 盒子的距离左边的值加盒子自身的宽度减去10像素时  就是表示已经点击到了盒子的右边框
                if(iEvent.clientX>oBox.offsetLeft+oBox.offsetWidth-3){
                    //alert('碰到了盒子的右边!');
                    //赋予上面X的值这时等于right  好用于下面的对比
                    X='right';
                }
                
                //当鼠标每移动一个像素点之时 触发 执行右边的函数  在事件前加document 是为了加大事件的作用域 移动时对整个页面文档有效 
                document.onmousemove=function (ev){
                    var iEvent=ev || event; //当当前的鼠标值减去之前获取的鼠标值为正数 那么正数加正数是增大
                    if (X=='right') {       //当当前的鼠标值减去之前获取的鼠标值为负数 那么正数加负数是变小
                        oBox.style.width=W+(iEvent.clientX-disX)+'px';
                    }                       //当当前的鼠标值减去之前获取的鼠标值为负数 那么正数减负数是负负得正 增大
                };
                //当拖动结束后 我们需要释放鼠标 添加鼠标按下松开事件 onmouseup 让鼠标点击不松 的事件为空 让鼠标每移动
                document.onmouseup=function (){  
                    X=null;
                    document.onmousemove=null;//一像素的触发的事件为空   
                }
            };
    </script>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值