当前位置:首页 > VUE

vue 看板实现

2026-01-18 13:44:04VUE

Vue 看板实现方法

基础结构搭建

使用 Vue CLI 或 Vite 初始化项目,安装依赖库如 vuedraggable 实现拖拽功能。创建看板组件,包含列表(List)和卡片(Card)的嵌套结构。

// 示例数据结构
data() {
  return {
    lists: [
      {
        id: 1,
        title: "待处理",
        cards: [
          { id: 101, content: "任务A" },
          { id: 102, content: "任务B" }
        ]
      },
      {
        id: 2,
        title: "进行中",
        cards: []
      }
    ]
  }
}

拖拽功能实现

通过 vuedraggable 库实现跨列表拖拽。需在列表容器和卡片容器上分别应用拖拽组件。

<draggable 
  v-model="lists" 
  group="lists" 
  @end="onListDragEnd">
  <div v-for="list in lists" :key="list.id">
    <h3>{{ list.title }}</h3>
    <draggable 
      v-model="list.cards" 
      group="cards"
      @end="onCardDragEnd">
      <div v-for="card in list.cards" :key="card.id">
        {{ card.content }}
      </div>
    </draggable>
  </div>
</draggable>

状态管理

对于复杂场景建议使用 Vuex 或 Pinia 集中管理看板状态。定义 mutations/actions 处理卡片移动、列表更新等操作。

// Pinia 示例
export const useBoardStore = defineStore('board', {
  state: () => ({ lists: [] }),
  actions: {
    moveCard({ fromListId, toListId, cardId }) {
      // 移动逻辑实现
    }
  }
})

样式优化

采用 Flexbox 或 CSS Grid 布局实现自适应看板。为拖拽状态添加视觉反馈:

.list {
  background: #ebecf0;
  border-radius: 4px;
  padding: 8px;
  margin: 0 10px;
  min-width: 250px;
}
.card {
  background: white;
  padding: 6px 12px;
  margin: 4px 0;
  box-shadow: 0 1px 0 rgba(9,30,66,.25);
}
.sortable-chosen {
  background: #f0f0f0;
}

功能扩展

  1. 添加卡片:每个列表顶部放置输入框,通过 @keyup.enter 触发添加操作
  2. 持久化存储:结合 localStorage 或后端 API 保存看板状态
  3. 实时协作:通过 WebSocket 实现多用户同步

完整组件示例

<template>
  <div class="board">
    <draggable ...>
      <!-- 列表渲染逻辑 -->
    </draggable>
  </div>
</template>

<script>
import draggable from 'vuedraggable'
export default {
  components: { draggable },
  methods: {
    onCardDragEnd(evt) {
      console.log('卡片移动完成', evt)
    }
  }
}
</script>

vue 看板实现

标签: 看板vue
分享给朋友:

相关文章

vue实现前端分离

vue实现前端分离

Vue 实现前后端分离 前后端分离是一种架构模式,前端负责页面渲染和交互逻辑,后端提供数据接口。Vue.js 作为前端框架,非常适合实现前后端分离的开发模式。 核心实现步骤 创建 Vue 项目 使…

vue实现webapp

vue实现webapp

Vue 实现 WebApp 的基本步骤 环境准备 确保已安装 Node.js 和 npm/yarn。通过 Vue CLI 或 Vite 创建项目: npm install -g @vue/cli…

vue实现123456

vue实现123456

Vue 实现数字 123456 的显示 在 Vue 中显示数字 123456 非常简单,可以通过以下方法实现: 方法一:直接在模板中显示 <template> <div>…

vue实现筛选

vue实现筛选

实现筛选功能的基本思路 在Vue中实现筛选功能通常需要结合数据绑定、计算属性和方法。筛选的核心逻辑是根据用户输入的条件过滤原始数据列表,并动态更新显示结果。 数据准备 定义一个数组存储原始数据,另…

vue实现xterm

vue实现xterm

在 Vue 中集成 Xterm.js Xterm.js 是一个基于 TypeScript 的前端终端组件库,可用于在浏览器中实现终端功能。以下是在 Vue 项目中集成 Xterm.js 的详细步骤。…

vue实现队列

vue实现队列

Vue 实现队列功能 在 Vue 中实现队列功能可以通过多种方式完成,以下是几种常见的方法: 使用数组模拟队列 队列遵循先进先出(FIFO)原则,可以用数组的 push 和 shift 方法模拟入队…