美文网首页
原生拖拽分割窗口

原生拖拽分割窗口

作者: zkzhengmeng | 来源:发表于2024-10-17 17:45 被阅读0次
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>鼠标移动分割窗口</title>
        <style type="text/css">
            .wrap {
                border: 1px solid red;
                width: 100%;
                height: 100vh;
                display: flex;
                justify-content: space-between;
            }

            .left {
                width: calc(35% - 10px);
                background-color: aqua;
                height: 100%;
            }

            .middle {
                text-align: center;
                line-height: 100vh;
            }

            .middle span:hover {
                cursor: w-resize;
            }

            .right {
                width: calc(65% - 10px);
                background-color: chocolate;
                height: 100%;
            }
        </style>
    </head>
    <body onload="initLayout();">
        <div class="wrap">
            <div class="left" id="leftLayout">
                <div style="margin-top: 300px;text-align: center;"><span>默认宽度:35%</span>移动实时宽度:<span id="ls"></span>px</div>
            </div>
            <div class="middle" id="middleLayout" style="width:20px;text-align: center;"><span>|||</span></div>
            <div class="right" id="rightLayout">
                <div style="margin-top: 300px;text-align: center;"><span style="margin-right:10px;">默认宽度:65%</span>移动实时宽度:<span id="rs"></span>px</div>
            </div>
        </div>
        <script type="text/javascript">
            window.onload = function() {
                console.log('--->>> 初始化加载..');
                console.log(event);
                var leftLayout = document.getElementById("leftLayout");
                var middleLayout = document.getElementById("middleLayout");
                var rightLayout = document.getElementById("rightLayout");
                var gutterSize = 300 //限制两边最小拖拽距离
                console.log(' 左侧元素 --->>>', leftLayout);
                console.log(' 中间元素 --->>>', middleLayout);
                console.log(' 右侧元素 --->>>', rightLayout);
                middleLayout.onmousedown = function(evd) {
                    var leftWidth = parseInt(leftLayout.offsetWidth);
                    var rightWidth = parseInt(rightLayout.offsetWidth);
                    var evd = evd || event;
                    var mouseDownX = evd.clientX;
                    var mouseDownOffsetX = evd.offsetX;
                    console.log('--->>>鼠标按下的ev:', evd);
                    console.log('--->>> 鼠标按下的X轴:', mouseDownX);
                    document.onmousemove = function(ev) {
                        var ev = ev || event;
                        console.log('--->>> 鼠标移动产生的ev:', ev);
                        console.log('--->>> 鼠标移动的X轴:', ev.clientX);
                        var maxRW = parseInt(mouseDownX) + rightWidth - gutterSize; //左侧最大分割值
                        var maxLW = parseInt(mouseDownX) - leftWidth + gutterSize; //右侧最大分割值
                        var evCMX = parseInt(ev.clientX)
                        var newLeftWidth = leftWidth + (evCMX - parseInt(mouseDownX))
                        var newRightWidth = rightWidth + (parseInt(mouseDownX) - evCMX)
                        console.log(' 左侧宽度 --->>> ', newLeftWidth);
                        console.log(' 右侧宽度 --->>> ', newRightWidth);
                        document.getElementById("ls").innerHTML = newLeftWidth;
                        document.getElementById("rs").innerHTML = newRightWidth;
                        // 当出现负数时 or 超过允许的最大宽度时,不进行赋值
                        if (newLeftWidth > 0 && newRightWidth > 0 && evCMX > maxLW && evCMX < maxRW) {
                            console.log('---->>> 重置宽度.');
                            leftLayout.style.width = newLeftWidth + "px";
                            rightLayout.style.width = newRightWidth + "px";
                        }
                    }
                    document.onmouseup = function(ev) {
                        document.onmousemove = null;
                    }
                }
            }
        </script>
    </body>
</html>

相关文章

  • 文件拖拽

    文件拖拽ondragover 拖拽文件进入窗口 (不断执行)ondragenter 拖拽文件进入窗口 ...

  • 如何完成一个js原生窗口拖拽?

    窗口拖拽这一功能在web app中经常要用到,所以我们需要写一个原生的拖拽功能。 1.html代码 在id为myD...

  • usr_08: 分割窗口

    08.1: 分割窗口 :split # 对当前窗口分割一个副本,默认为上下分割crrl-w # 在不同窗口中进行...

  • 实现拖拽

    原生js实现 HTML5原生实现:拖拽draggable属性、DataTranfers对象

  • HTML5实现拖拽

    实现拖拽效果源元素 - 要拖拽的文件目标元素 - 要拖拽到哪里去 目前实现拖拽效果使用原生DOM就能实现 - 最麻...

  • js拖拽html元素工具类

    复制就能用的拖拽js方法 原生js实现拖拽元素方法 使用(注意拖拽目标元素需绝对定位 position: 'abs...

  • JavaFX自定义标题栏:隐藏、放大和缩小、关闭、拉伸、拖拽

    以下代码是JavaFX自定义标题栏:隐藏窗口、放大和缩小窗口、关闭窗口、自定义拉伸窗口、拖拽窗口

  • 【Unity】自己做一个console窗口

    效果 功能 显示Log,以及堆栈信息 console窗口开关 console日志上下吸附开关 窗口拖拽 EasyL...

  • qml窗口拖拽闪烁

    以下是右边框示例 用以上代码进行拉伸的时候窗口会出现闪烁现象,经过一番仔细的搜索,在cpp文件中加入下面代码就可以解决

  • 可拖拽浮动窗口

    转载一个web可浮动窗口示例转载于http://www.jq22.com/webqd5574

网友评论

      本文标题:原生拖拽分割窗口

      本文链接:https://www.haomeiwen.com/subject/jpafdjtx.html