当前位置:首页 > VUE

vue 实现左右分栏

2026-02-17 03:15:34VUE

实现左右分栏的基本方法

使用Vue实现左右分栏布局可以通过多种方式完成,包括Flexbox、Grid或第三方组件库。以下是几种常见方法:

Flexbox布局

<template>
  <div class="container">
    <div class="left-sidebar">左侧内容</div>
    <div class="main-content">右侧内容</div>
  </div>
</template>

<style>
.container {
  display: flex;
  height: 100vh;
}
.left-sidebar {
  width: 200px;
  background: #f0f0f0;
}
.main-content {
  flex: 1;
  background: #fff;
}
</style>

CSS Grid布局

<template>
  <div class="grid-container">
    <div class="sidebar">左侧导航</div>
    <div class="content">主区域</div>
  </div>
</template>

<style>
.grid-container {
  display: grid;
  grid-template-columns: 240px 1fr;
  height: 100vh;
}
.sidebar {
  background: #eaeaea;
}
.content {
  background: #fff;
}
</style>

可拖拽调整分栏宽度

实现可拖拽调整的左右分栏需要添加拖拽事件处理:

<template>
  <div class="resizable-container">
    <div class="left-panel" :style="{ width: leftWidth + 'px' }">
      左侧面板
    </div>
    <div class="resize-handle" @mousedown="startResize"></div>
    <div class="right-panel">
      右侧面板
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      leftWidth: 200,
      isResizing: false
    }
  },
  methods: {
    startResize(e) {
      this.isResizing = true
      document.addEventListener('mousemove', this.handleResize)
      document.addEventListener('mouseup', this.stopResize)
    },
    handleResize(e) {
      if (this.isResizing) {
        this.leftWidth = e.clientX
      }
    },
    stopResize() {
      this.isResizing = false
      document.removeEventListener('mousemove', this.handleResize)
      document.removeEventListener('mouseup', this.stopResize)
    }
  }
}
</script>

<style>
.resizable-container {
  display: flex;
  height: 100vh;
}
.left-panel {
  background: #f5f5f5;
}
.resize-handle {
  width: 8px;
  background: #ddd;
  cursor: col-resize;
}
.right-panel {
  flex: 1;
  background: #fff;
}
</style>

使用第三方组件库

Element UI或Ant Design Vue等库提供了现成的分割面板组件:

Element UI示例

<template>
  <el-split v-model="splitRatio">
    <template #left>
      <div>左侧内容</div>
    </template>
    <template #right>
      <div>右侧内容</div>
    </template>
  </el-split>
</template>

<script>
export default {
  data() {
    return {
      splitRatio: 0.3
    }
  }
}
</script>

Ant Design Vue示例

<template>
  <a-split v-model:value="splitValue" style="height: 300px">
    <template #first>
      <div>左侧面板</div>
    </template>
    <template #second>
      <div>右侧面板</div>
    </template>
  </a-split>
</template>

<script>
export default {
  data() {
    return {
      splitValue: 0.5
    }
  }
}
</script>

响应式分栏设计

添加响应式处理,使分栏在小屏幕下变为垂直布局:

@media (max-width: 768px) {
  .container {
    flex-direction: column;
  }
  .left-sidebar {
    width: 100%;
    height: 100px;
  }
}

vue 实现左右分栏

标签: vue
分享给朋友:

相关文章

vue中实现显示和隐藏

vue中实现显示和隐藏

控制显示与隐藏的方法 在Vue中实现元素的显示和隐藏可以通过多种方式完成,以下是常见的几种方法: 1. 使用v-if指令v-if根据条件动态添加或移除DOM元素,适合需要频繁切换的场景。当条件为f…

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue element实现

vue element实现

Vue Element UI 实现 Vue Element UI 是基于 Vue.js 的组件库,提供丰富的 UI 组件,适合快速开发企业级中后台产品。以下是一些关键实现方法和步骤: 安装 Vue…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue scrolltop 实现

vue scrolltop 实现

实现 Vue 中的 scrollTop 在 Vue 中实现滚动到顶部功能可以通过多种方式完成,包括使用原生 JavaScript、Vue 指令或第三方库。以下是几种常见的实现方法: 使用原生 Ja…