vue實(shí)現(xiàn)拖動(dòng)調(diào)整左右兩側(cè)容器大小
本文實(shí)例為大家分享了vue實(shí)現(xiàn)拖動(dòng)調(diào)整左右兩側(cè)容器大小的具體代碼,供大家參考,具體內(nèi)容如下
頁(yè)面布局
<template> ? ? <a-layout class="width-auto" id="product"> ? ? ? ? <div class="content"> ? ? ? ? ? ? <div id="left" class="left"> ? ? ? ? ? ? 左側(cè) ? ? ? ? ? ? </div> ? ? ? ? ? ? <div id="line" class="resize-line"></div> ? ? ? ? ? ? <div id="right" class="right"> ? ? ? ? ? ? 右側(cè) ? ? ? ? ? ? </div> ? ? ? ? </div> ? ?</a-layout> ? ? ? ?? ?</template>
拖拽方法
drapContent() { ? ? // 獲取 左邊區(qū)域 的 寬度 ? ? let left = document.getElementById('left'); ? ? // 獲取 移動(dòng)區(qū)域 的 寬度 ? ? let line = document.getElementById('line'); ? ? // 獲取 右邊區(qū)域 的 寬度 ? ? let right = document.getElementById('right'); ? ? // 移動(dòng)區(qū)域鼠標(biāo)移入事件 ? ? line.onmousedown = function(e) { ? ? ? ? // 移動(dòng)的距離 ? ? ? ? let lineLeft = e.clientX; ? ? ? ? document.onmousemove = function(e) { ? ? ? ? ? ? // 移動(dòng)的位置 (側(cè)邊欄的寬度 + 移動(dòng)的寬度) ? ? ? ? ? ? let diffVal = 276 + (e.clientX -lineLeft); ? ? ? ? ? ? // 移動(dòng)區(qū)間的范圍 [276, 740] ? ? ? ? ? ? if(diffVal >= 276 && diffVal <= 840) { ? ? ? ? ? ? ? ? // 移動(dòng)區(qū)域距離左邊的距離 ? ? ? ? ? ? ? ? line.style.left = diffVal+'px'; ? ? ? ? ? ? ? ? // 左邊縮放的寬度 ? ? ? ? ? ? ? ? left.style.width = diffVal +'px'; ? ? ? ? ? ? ? ? // 右邊改變后的寬度 (改變后的寬度要加上移動(dòng)區(qū)域的寬度) ? ? ? ? ? ? ? ? right.style.width = document.getElementById('product').clientWidth - (diffVal + 16) +'px'; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? document.onmouseup = function() { ? ? ? ? ? ? document.onmousemove = null; ? ? ? ? ? ? document.onmouseup = null; ? ? ? ? } ? ? } }
在vue里面使用記得將方法在mounted中調(diào)用一下:
樣式
.content { ? ? display: flex; ? ? width: 100%; ? ? height: 100%; } .left { ? ? width: 260px; ? ? height: 100%; } .resize-line { ? ? /*鼠標(biāo)移入顯示左右箭頭*/ ? ? 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; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue3集成Element-Plus之全局導(dǎo)入和按需導(dǎo)入
這篇文章主要給大家介紹了關(guān)于vue3集成Element-Plus之全局導(dǎo)入和按需導(dǎo)入的相關(guān)資料,element-plus正是element-ui針對(duì)于vue3開發(fā)的一個(gè)UI組件庫(kù),?它的使用方式和很多其他的組件庫(kù)是一樣的,需要的朋友可以參考下2023-07-07vue項(xiàng)目打包之后接口出現(xiàn)錯(cuò)誤的問題及解決
這篇文章主要介紹了vue項(xiàng)目打包之后接口出現(xiàn)錯(cuò)誤的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04Ant Design Vue table組件如何自定義分頁(yè)器
這篇文章主要介紹了Ant Design Vue table組件如何自定義分頁(yè)器問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04vue中el-table實(shí)現(xiàn)穿梭框(數(shù)據(jù)可以上移下移)
本文主要介紹了vue中el-table實(shí)現(xiàn)穿梭框(數(shù)據(jù)可以上移下移),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06vue項(xiàng)目運(yùn)行npm?install報(bào)錯(cuò)問題及解決
這篇文章主要介紹了vue項(xiàng)目運(yùn)行npm?install報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08vue3.0語(yǔ)法糖內(nèi)的defineProps及defineEmits解析
這篇文章主要介紹了vue3.0語(yǔ)法糖內(nèi)的defineProps及defineEmits解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04