当前位置:首页 > VUE

vue实现左右拉伸

2026-03-28 04:13:01VUE

实现左右拉伸布局的方法

在Vue中实现左右拉伸布局,可以通过CSS的flex布局或grid布局结合Vue的响应式特性完成。以下是两种常见实现方式:

使用flex布局实现

创建父容器设置为display: flex,左右子元素分别设置固定宽度和自动拉伸:

<template>
  <div class="container">
    <div class="left-sidebar">左侧边栏</div>
    <div class="main-content">主内容区</div>
    <div class="right-sidebar">右侧边栏</div>
  </div>
</template>

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

使用CSS grid布局

通过grid-template-columns定义列宽,结合resize属性实现拖拽调整:

<template>
  <div class="grid-container">
    <div class="grid-left">左侧区域</div>
    <div class="grid-main">主区域</div>
  </div>
</template>

<style>
.grid-container {
  display: grid;
  grid-template-columns: auto 1fr;
  height: 100vh;
}
.grid-left {
  width: 200px;
  background: #eaeaea;
  resize: horizontal;
  overflow: hidden;
}
.grid-main {
  background: #fff;
}
</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);
      document.removeEventListener('mouseup', this.stopDrag);
    }
  }
}
</script>

<style>
.drag-container {
  display: flex;
  height: 100vh;
}
.drag-divider {
  width: 5px;
  background: #ddd;
  cursor: col-resize;
}
.drag-left {
  width: 200px;
  background: #f5f5f5;
}
.drag-right {
  flex: 1;
  background: #fff;
}
</style>

使用第三方库

对于更专业的可调整布局,可以考虑使用以下Vue组件库:

vue实现左右拉伸

  • VueSplit:提供可拖拽的分割面板
  • Split.js:轻量级的可调整分割布局库
  • VueDraggableResizable:可拖拽和调整大小的组件

这些方法可以根据具体需求选择,flex和grid方案适合简单布局,自定义拖拽逻辑提供更灵活的交互,第三方库则能快速实现复杂功能。

标签: vue
分享给朋友:

相关文章

vue增删改查简单实现

vue增删改查简单实现

基础环境搭建 确保已安装Node.js和Vue CLI。通过以下命令创建Vue项目: npm install -g @vue/cli vue create vue-crud-demo cd vue-…

vue实现用户信息删除

vue实现用户信息删除

Vue 实现用户信息删除功能 在 Vue 中实现用户信息删除功能通常涉及前端界面交互和后端 API 调用。以下是实现步骤: 前端界面设计 创建删除按钮或操作项,通常使用 @click 事件触发删除操…

vue实现尺子

vue实现尺子

Vue 实现尺子组件 实现一个尺子组件可以通过 Canvas 或纯 CSS 完成。以下是两种常见实现方式: 使用 Canvas 绘制尺子 通过 Canvas 动态绘制刻度线和数字,适合需要高精度或动…

vue实现表单

vue实现表单

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定。适用于 input、textarea、select 等元素。 <template> <…

vue前端实现

vue前端实现

Vue 前端实现基础步骤 安装 Vue.js 和相关依赖 通过 npm 或 yarn 安装 Vue.js,建议使用 Vue CLI 快速搭建项目。运行命令 npm install -g @vue/cl…

vue 实现table

vue 实现table

Vue 实现 Table 的方法 使用原生 HTML 表格 通过 Vue 的 v-for 指令动态渲染表格数据,适合简单表格场景。 <template> <table>…