vue:左右過(guò)渡展開(kāi)折疊的組件
前言:
在網(wǎng)上找了好久關(guān)于左右過(guò)渡動(dòng)畫(huà)折疊的組件,沒(méi)有合適的代碼,效果類似于element UI中的Drawer抽屜組件,只不過(guò)ele中的都是懸浮的組件,工作中遇到的很多都是占用空間的展開(kāi)折疊,網(wǎng)上很多也是上下展開(kāi)收起的組件,于是就自己寫了一個(gè)。
1.整個(gè)應(yīng)用頁(yè)面采用彈性盒布局,左邊容器的寬度固定px,右邊容器寬度為 flex:1。
html:
<div class="current-page"> // 引入組件 <pack-up> <div>我是文字文字文字</div> </pack-up> <div class="right"> 右邊的數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù) </div> </div>
css:
.current-page{ width: 100%; height: 100%; display: flex; } .left{ width: 500px; } .right{ flex: 1; }
2.關(guān)于組件
html:
.current-page{ width: 100%; height: 100%; display: flex; } .left{ width: 500px; } .right{ flex: 1; }
css:
.curr-contents{ width: 500px; height: 100%; position: relative; background: lightpink; transition: all .5s ease-in-out; padding: 0 10px; /* transition: height .3s; */ } .curr-contents .pack-ups{ height: 100%; background: lightcyan; position: absolute; right: 0; top: 0; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: all .5s ease-in-out; } .show-areas{ transition: all .5s ease-in-out; }
核心js代碼:
// 點(diǎn)擊展開(kāi) 折疊 handlePack(){ this.openflags=!this.openflags const liCon = this.$refs.outerDiv let packUps=this.$refs.packUps if (this.openflags) { // 展開(kāi) liCon.style.width = 'auto' liCon.style.width = this.liConWidth + 'px' packUps.style.position='absolute' packUps.style.left='auto' packUps.style.right='0' } else { // 收起 liCon.style.width = 0 + 'px' packUps.style.position='absolute' packUps.style.right='auto' packUps.style.left='0' } }
利用v-show使得被折疊的內(nèi)容不被銷毀,緩存之前的數(shù)據(jù)
也可以用font-size:0來(lái)隱藏內(nèi)容區(qū)
3.完整代碼:
父組件:
<template> <div class="current-page"> <pack-up> <div>我是文字文字文字</div> </pack-up> <div class="right"> 右邊的數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù) </div> </div> </template> <script> import packUp from "./component/packUp" export default { name:'', components:{ packUp }, data(){ return{} }, mounted(){}, methods:{} } </script> <style scoped> .current-page{ width: 100%; height: 100%; display: flex; } .left{ width: 500px; } .right{ flex: 1; } </style>
子組件:
<template> <div class="curr-contents" ref="outerDiv"> <div class="show-areas" v-show="openflags"> <!-- 內(nèi)容插槽 --> <slot></slot> </div> <div class="pack-ups" ref="packUps" @click="handlePack"> <i class="el-icon-arrow-right"></i> </div> </div> </template> <script> export default { name:'', data() { return { liConWidth:500, // 左邊容器的寬度 openflags:true, } }, methods: { // 點(diǎn)擊展開(kāi) 折疊 handlePack(){ this.openflags=!this.openflags const liCon = this.$refs.outerDiv let packUps=this.$refs.packUps if (this.openflags) { // 展開(kāi) liCon.style.width = 'auto' liCon.style.width = this.liConWidth + 'px' packUps.style.position='absolute' packUps.style.left='auto' packUps.style.right='0' } else { // 收起 liCon.style.width = 0 + 'px' packUps.style.position='absolute' packUps.style.right='auto' packUps.style.left='0' } } } } </script> <style scoped> .curr-contents{ width: 500px; height: 100%; position: relative; background: lightpink; transition: all .5s ease-in-out; padding: 0 10px; /* transition: height .3s; */ } .curr-contents .pack-ups{ height: 100%; background: lightcyan; position: absolute; right: 0; top: 0; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: all .5s ease-in-out; } .show-areas{ transition: all .5s ease-in-out; } </style>
- Vue使用Element折疊面板Collapse如何設(shè)置默認(rèn)全部展開(kāi)
- vue+antd實(shí)現(xiàn)折疊與展開(kāi)組件
- Vue3+Element-Plus實(shí)現(xiàn)左側(cè)菜單折疊與展開(kāi)功能示例
- vue同個(gè)按鈕控制展開(kāi)和折疊同個(gè)事件操作
- vue-列表下詳情的展開(kāi)與折疊案例
- vue多級(jí)復(fù)雜列表展開(kāi)/折疊及全選/分組全選實(shí)現(xiàn)
- vuejs實(shí)現(xiàn)折疊面板展開(kāi)收縮動(dòng)畫(huà)效果
- Vue 實(shí)現(xiàn)展開(kāi)折疊效果的示例代碼
相關(guān)文章
uniapp微信小程序axios庫(kù)的封裝及使用詳細(xì)教程
這篇文章主要給大家介紹了關(guān)于uniapp微信小程序axios庫(kù)的封裝及使用的相關(guān)資料,Axios是一個(gè)基于promise網(wǎng)絡(luò)請(qǐng)求庫(kù),作用于node.js和瀏覽器中axios-miniprogram-adapteraxios的小程序適配器,需要的朋友可以參考下2023-08-08element表格組件實(shí)現(xiàn)右鍵菜單的功能
本文主要介紹了element表格組件實(shí)現(xiàn)右鍵菜單的功能,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03vue3使用elementPlus進(jìn)行table合并處理的示例詳解
虛擬數(shù)據(jù)中公司下有多個(gè)客戶,公司一樣的客戶,公司列需要合并,客戶如果一樣也需要合并進(jìn)行展示,所以本文給大家介紹了vue3使用elementPlus進(jìn)行table合并處理的實(shí)例,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02Vue+mui實(shí)現(xiàn)圖片的本地緩存示例代碼
這篇文章主要介紹了Vue+mui實(shí)現(xiàn)圖片的本地緩存的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05vue 解決數(shù)組賦值無(wú)法渲染在頁(yè)面的問(wèn)題
今天小編就為大家分享一篇vue 解決數(shù)組賦值無(wú)法渲染在頁(yè)面的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-10-10