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

 更新时间:2022年03月22日 09:13:37   作者:HerayChen  
这篇文章主要为大家详细介绍了vue实现拖动调整左右两侧容器大小,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了vue实现拖动调整左右两侧容器大小的具体代码,供大家参考,具体内容如下

页面布局

<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;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • vue3集成Element-Plus之全局导入和按需导入

    vue3集成Element-Plus之全局导入和按需导入

    这篇文章主要给大家介绍了关于vue3集成Element-Plus之全局导入和按需导入的相关资料,element-plus正是element-ui针对于vue3开发的一个UI组件库, 它的使用方式和很多其他的组件库是一样的,需要的朋友可以参考下
    2023-07-07
  • vue项目打包之后接口出现错误的问题及解决

    vue项目打包之后接口出现错误的问题及解决

    这篇文章主要介绍了vue项目打包之后接口出现错误的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • Ant Design Vue table组件如何自定义分页器

    Ant Design Vue table组件如何自定义分页器

    这篇文章主要介绍了Ant Design Vue table组件如何自定义分页器问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • vue中el-table实现穿梭框(数据可以上移下移)

    vue中el-table实现穿梭框(数据可以上移下移)

    本文主要介绍了vue中el-table实现穿梭框(数据可以上移下移),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • vue高德地图绘制行政区边界功能

    vue高德地图绘制行政区边界功能

    这篇文章主要介绍了vue高德地图绘制行政区边界功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2024-03-03
  • Vue之Axios的异步请求问题详解

    Vue之Axios的异步请求问题详解

    总的来说这并不是一道难题,那为什么要拿出这道题介绍?拿出这道题真正想要传达的是解题的思路,以及不断优化探寻最优解的过程。希望通过这道题能给你带来一种解题优化的思路,Axios是一个开源的可以用在浏览器端和Node JS的异步通信框架,主要作用就是实现AJAX异步通信
    2023-02-02
  • vue项目运行npm install报错问题及解决

    vue项目运行npm install报错问题及解决

    这篇文章主要介绍了vue项目运行npm install报错问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Vue Vite热更新不起作用的正确解决办法

    Vue Vite热更新不起作用的正确解决办法

    热更新全称Hot Module Reload,常常在构建工具里面出现,下面这篇文章主要介绍了Vue Vite热更新不起作用的正确解决办法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • react和vue的事件处理差异详解

    react和vue的事件处理差异详解

    这篇文章主要介绍了react和vue的事件处理差异,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • vue3.0语法糖内的defineProps及defineEmits解析

    vue3.0语法糖内的defineProps及defineEmits解析

    这篇文章主要介绍了vue3.0语法糖内的defineProps及defineEmits解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04

最新评论