当前位置:首页 > VUE

vue 实现页面分栏

2026-01-19 10:56:43VUE

使用 CSS Grid 布局实现分栏

通过 CSS Grid 可以快速实现分栏布局。在 Vue 模板中定义网格容器,设置 grid-template-columns 控制栏数和宽度比例。

<template>
  <div class="grid-container">
    <div class="left-column">左侧内容</div>
    <div class="right-column">右侧内容</div>
  </div>
</template>

<style scoped>
.grid-container {
  display: grid;
  grid-template-columns: 1fr 2fr; /* 左右比例 1:2 */
  gap: 16px; /* 栏间距 */
}
</style>

使用 Flexbox 实现动态分栏

Flexbox 适合需要动态调整的分栏场景。通过 flex 属性控制各栏的伸缩比例。

<template>
  <div class="flex-container">
    <div class="sidebar" :style="{ width: sidebarWidth + 'px' }">侧边栏</div>
    <div class="main-content">主内容区</div>
  </div>
</template>

<script>
export default {
  data() {
    return { sidebarWidth: 200 }
  }
}
</script>

<style scoped>
.flex-container {
  display: flex;
}
.sidebar {
  flex-shrink: 0; /* 禁止收缩 */
}
.main-content {
  flex-grow: 1; /* 自动填充剩余空间 */
}
</style>

响应式分栏设计

结合媒体查询实现移动端和桌面端的不同分栏表现:

/* 桌面端两栏布局 */
@media (min-width: 768px) {
  .responsive-container {
    display: grid;
    grid-template-columns: 250px 1fr;
  }
}

/* 移动端单栏堆叠 */
@media (max-width: 767px) {
  .responsive-container {
    display: block;
  }
}

可拖拽调整的分栏实现

通过 vue-draggable 或原生拖拽 API 实现栏宽调整功能:

<template>
  <div class="draggable-container">
    <div class="left-panel" :style="{ width: leftWidth + 'px' }"></div>
    <div 
      class="divider"
      @mousedown="startDrag"
    ></div>
    <div class="right-panel"></div>
  </div>
</template>

<script>
export default {
  data() {
    return { leftWidth: 300, isDragging: false }
  },
  methods: {
    startDrag(e) {
      this.isDragging = true
      document.addEventListener('mousemove', this.handleDrag)
      document.addEventListener('mouseup', this.stopDrag)
    },
    handleDrag(e) {
      if (this.isDragging) {
        this.leftWidth = e.clientX
      }
    },
    stopDrag() {
      this.isDragging = false
    }
  }
}
</script>

<style>
.draggable-container {
  display: flex;
  height: 100vh;
}
.divider {
  width: 8px;
  background: #ddd;
  cursor: col-resize;
}
</style>

基于组件的分栏封装

创建可复用的分栏组件,通过插槽分配内容区域:

<!-- SplitPane.vue -->
<template>
  <div class="split-pane">
    <div class="pane left-pane">
      <slot name="left"></slot>
    </div>
    <div class="pane right-pane">
      <slot name="right"></slot>
    </div>
  </div>
</template>

<!-- 使用示例 -->
<SplitPane>
  <template #left>
    <Navigation/>
  </template>
  <template #right>
    <MainContent/>
  </template>
</SplitPane>

vue 实现页面分栏

标签: 页面vue
分享给朋友:

相关文章

vue实现文档

vue实现文档

Vue 实现文档的方法 在 Vue 中实现文档功能可以通过多种方式,包括使用富文本编辑器、Markdown 解析或直接渲染 HTML。以下是几种常见的实现方法。 使用富文本编辑器 富文本编辑器如 T…

vue实现页面属性修改

vue实现页面属性修改

Vue 实现页面属性修改的方法 在 Vue 中修改页面属性可以通过多种方式实现,以下是一些常见的方法: 使用 data 属性 在 Vue 组件中,可以通过 data 选项定义页面属性,并在模板或方…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的d…

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交…

vue实现倒计时抢券

vue实现倒计时抢券

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

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-s…