当前位置:首页 > VUE

vue实现页面分栏

2026-01-19 02:44:23VUE

Vue 实现页面分栏的方法

使用 CSS Flexbox 布局

通过 CSS Flexbox 可以快速实现分栏布局,适用于大多数现代浏览器。

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

<style scoped>
.container {
  display: flex;
  height: 100vh;
}
.left-column {
  flex: 1;
  background-color: #f0f0f0;
  padding: 20px;
}
.right-column {
  flex: 1;
  background-color: #e0e0e0;
  padding: 20px;
}
</style>

使用 CSS Grid 布局

CSS Grid 提供了更灵活的分栏控制,适合复杂布局需求。

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

<style scoped>
.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  height: 100vh;
  gap: 10px;
}
.grid-left {
  background-color: #f0f0f0;
  padding: 20px;
}
.grid-right {
  background-color: #e0e0e0;
  padding: 20px;
}
</style>

使用第三方组件库

Element UI 或 Ant Design Vue 等组件库提供了现成的布局组件。

<template>
  <el-row>
    <el-col :span="12">左侧内容</el-col>
    <el-col :span="12">右侧内容</el-col>
  </el-row>
</template>

<script>
import { ElRow, ElCol } from 'element-plus'
export default {
  components: { ElRow, ElCol }
}
</script>

响应式分栏布局

结合媒体查询实现响应式分栏,在不同屏幕尺寸下显示不同布局。

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

<style scoped>
.responsive-container {
  display: flex;
  flex-direction: column;
}
.responsive-left, .responsive-right {
  padding: 20px;
}
@media (min-width: 768px) {
  .responsive-container {
    flex-direction: row;
  }
  .responsive-left, .responsive-right {
    flex: 1;
  }
}
</style>

可拖拽调整的分栏

实现可拖拽调整宽度的分栏,提升用户体验。

vue实现页面分栏

<template>
  <div class="drag-container">
    <div class="drag-left" ref="leftPanel">左侧内容</div>
    <div class="drag-divider" @mousedown="startDrag"></div>
    <div class="drag-right">右侧内容</div>
  </div>
</template>

<script>
export default {
  methods: {
    startDrag(e) {
      document.addEventListener('mousemove', this.onDrag)
      document.addEventListener('mouseup', this.stopDrag)
    },
    onDrag(e) {
      this.$refs.leftPanel.style.width = e.clientX + 'px'
    },
    stopDrag() {
      document.removeEventListener('mousemove', this.onDrag)
    }
  }
}
</script>

<style scoped>
.drag-container {
  display: flex;
  height: 100vh;
}
.drag-left {
  width: 50%;
  background-color: #f0f0f0;
  padding: 20px;
}
.drag-divider {
  width: 5px;
  background-color: #ccc;
  cursor: col-resize;
}
.drag-right {
  flex: 1;
  background-color: #e0e0e0;
  padding: 20px;
}
</style>

每种方法适用于不同场景,可根据项目需求选择最合适的实现方式。Flexbox 和 Grid 适合基础分栏,组件库能快速集成,响应式设计适配多设备,拖拽功能增强交互性。

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

相关文章

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript 图表…

vue实现新闻

vue实现新闻

Vue 实现新闻功能 使用 Vue 实现新闻功能通常涉及新闻列表展示、新闻详情页、分类筛选等模块。以下是实现的基本思路和代码示例。 新闻列表展示 通过 Vue 组件展示新闻列表,通常使用 v-for…

vue实现通知

vue实现通知

Vue 实现通知功能的方法 使用 Vue 实现通知功能可以通过多种方式实现,以下是一些常见的方法: 使用 Vue 的全局事件总线 在 Vue 中可以通过事件总线实现通知功能。创建一个全局事件总线,然…

vue路由实现

vue路由实现

Vue 路由实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现步骤和核心功能。 安装 Vue Router 通过…

vue实现 toast

vue实现 toast

Vue 实现 Toast 组件 在 Vue 中实现 Toast 组件可以通过多种方式完成,以下是几种常见的方法: 使用全局组件和事件总线 创建一个全局的 Toast 组件,并通过事件总线或 Vue…

vue实现dag

vue实现dag

Vue实现DAG(有向无环图) 在Vue中实现DAG(Directed Acyclic Graph,有向无环图)通常涉及数据结构的建模、可视化渲染以及交互逻辑处理。以下是关键实现步骤和示例代码: 数…