当前位置:首页 > 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 提供了更灵活的分栏控制,适合复杂布局需求。

vue实现页面分栏

<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 等组件库提供了现成的布局组件。

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>

可拖拽调整的分栏

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

<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实现头像剪切

vue实现头像剪切

Vue 实现头像剪切的实现方法 使用 vue-cropperjs 库 vue-cropperjs 是一个基于 cropperjs 的 Vue 组件,专门用于图片裁剪。安装方式如下: npm inst…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。 安装依…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue穿梭框组件实现

vue穿梭框组件实现

实现基础穿梭框组件 在Vue中实现穿梭框组件,可以使用<el-transfer>(Element UI)或手动实现。以下是手动实现的核心逻辑: <template> &l…

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keywor…

vue实现下拉框删除

vue实现下拉框删除

Vue 实现下拉框删除功能 在Vue中实现下拉框的删除功能通常涉及以下步骤: 数据绑定与渲染 在Vue组件中定义数据数组用于存储下拉框选项: data() { return { op…