Vue3封装一个左侧可拖拽折叠的侧边栏布局

功能

1、点击左侧侧边栏可折叠或打开
2、左侧侧边栏可拖拽

代码

<template>
  <div class="fold-left-box">
    <div class="fold-left-box-left" :style="{ width: asideWidth + 'px' }" v-show="asideWidth > 0">
      left
    </div>
    <div
      class="fold-left-box-line"
      :style="{ cursor: asideWidth === 0 ? '' : 'col-resize' }"
      ref="drag"
    >
      <el-button size="mini" circle class="fold-left-box-line-button" @click="foldLeft">{{
        asideWidth === 0 ? '开' : '关'
      }}</el-button>
    </div>
    <div class="fold-left-box-main">main</div>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue'
onMounted(() => {
  bindDrop()
})
function foldLeft() {
  asideWidth.value = asideWidth.value === 0 ? 250 : 0
}
const drag = ref(null)
const asideWidth = ref(300)
function bindDrop() {
  drag.value.onmousedown = function () {
    document.onmousemove = function (e) {
      asideWidth.value = asideWidth.value + e.movementX
      if (asideWidth.value < 20) {
        document.onmouseup()
        asideWidth.value = 0
      }
    }
    document.onmouseup = function () {
      document.onmousemove = null
      document.onmouseup = null
    }
    return false
  }
}
</script>
<style scoped>
.fold-left-box {
  height: 500px;
  overflow: hidden;
  display: flex;
}
.fold-left-box-left {
  height: 100%;
  overflow: hidden;
}
.fold-left-box-line {
  width: 4px;
  height: 100%;
  position: relative;
  border-left: 1px solid #e6e6e6;
}
.fold-left-box-main {
  height: 100%;
  flex: 1;
  padding-left: 12px;
  overflow: hidden;
}
.fold-left-box-line-button {
  position: absolute;
  top: 50%;
  right: -10px;
}
</style>

效果图

链接: Vue封装一个左侧可拖拽折叠的侧边栏布局

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于Vue 3的侧边栏封装菜单栏,你可以按照以下步骤进行: 步骤1:创建侧边栏组件 首先,创建一个名为SidebarMenu的Vue组件,在该组件中,可以定义侧边栏的样式、菜单项等。 ```vue <template> <div class="sidebar"> <ul> <li v-for="item in menuItems" :key="item.id" @click="handleItemClick(item)"> {{ item.text }} </li> </ul> </div> </template> <script> export default { data() { return { menuItems: [ { id: 1, text: '菜单项1' }, { id: 2, text: '菜单项2' }, { id: 3, text: '菜单项3' } ] }; }, methods: { handleItemClick(item) { // 处理菜单项的点击事件 console.log(item); } } }; </script> <style scoped> .sidebar { background-color: #f0f0f0; width: 200px; } ul { list-style-type: none; } li { padding: 10px; cursor: pointer; } li:hover { background-color: #ddd; } </style> ``` 步骤2:在主页面中使用侧边栏组件 在你的主页面中,使用SidebarMenu组件,并传入相应的菜单数据。 ```vue <template> <div> <sidebar-menu></sidebar-menu> <div class="content"> <!-- 主要内容区域 --> </div> </div> </template> <script> import SidebarMenu from '@/components/SidebarMenu.vue'; export default { components: { SidebarMenu } }; </script> <style> .content { margin-left: 200px; /* 与侧边栏宽度保持一致 */ } </style> ``` 通过以上步骤,你就可以在Vue 3中封装一个简单的侧边栏菜单栏组件,并在主页面中使用它了。你可以根据需要,自定义样式、菜单项的数据以及处理菜单项点击事件的逻辑。希望以上信息对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值