亲宝软件园·资讯

展开

vue拖动调整左右两侧容器大小

HerayChen 人气:0

页面布局

<template>
    <a-layout class="width-auto" id="product">
        <div class="content">
            <div id="left" class="left">
            左侧
            </div>
            <div id="line" class="resize-line"></div>
            <div id="right" class="right">
            右侧
            </div>
        </div>
   </a-layout>         
 </template> 

拖拽方法

drapContent() {
    // 获取 左边区域 的 宽度
    let left = document.getElementById('left');
    // 获取 移动区域 的 宽度
    let line = document.getElementById('line');
    // 获取 右边区域 的 宽度
    let right = document.getElementById('right');
    // 移动区域鼠标移入事件
    line.onmousedown = function(e) {
        // 移动的距离
        let lineLeft = e.clientX;
        document.onmousemove = function(e) {
            // 移动的位置 (侧边栏的宽度 + 移动的宽度)
            let diffVal = 276 + (e.clientX -lineLeft);
            // 移动区间的范围 [276, 740]
            if(diffVal >= 276 && diffVal <= 840) {
                // 移动区域距离左边的距离
                line.style.left = diffVal+'px';
                // 左边缩放的宽度
                left.style.width = diffVal +'px';
                // 右边改变后的宽度 (改变后的宽度要加上移动区域的宽度)
                right.style.width = document.getElementById('product').clientWidth - (diffVal + 16) +'px';
            }
        }
        document.onmouseup = function() {
            document.onmousemove = null;
            document.onmouseup = null;
        }
    }
}

在vue里面使用记得将方法在mounted中调用一下:

样式

.content {
    display: flex;
    width: 100%;
    height: 100%;
}
.left {
    width: 260px;
    height: 100%;
}
.resize-line {
    /*鼠标移入显示左右箭头*/
    cursor: ew-resize;
    width: 16px;
    min-width: 16px;
    max-width: 16px;
    background-color: transparent;
}
.right {
    width: calc(100% - 276px);
    max-width: calc(100% - 276px);
    user-select: none;
}
.ant-layout {
    height: calc(100vh - 181px);
}
:deep(.top-search .ant-form-item label) {
    min-width: 72px;
}
:deep(.ant-layout-sider) {
    flex: 0 0 100%;
     max-width: 100% !important;
     min-width: 260px !important;
    width: 100% !important;
    user-select: none;
}
.width-auto .tree-layout-sider {
    height: calc(100vh - 181px);
    overflow-x: hidden;
    overflow-y: auto;
    padding-left: 8px !important;
    padding-right: 0 !important;
}

.width-auto li li .ant-tree-title {
    width: 100% !important;
}

:deep(.ant-tree.ant-tree-block-node li .ant-tree-node-content-wrapper) {
    overflow: hidden;
    text-overflow: ellipsis;
    word-break: break-word;
}

加载全部内容

相关教程
猜你喜欢
用户评论