当前位置:首页 > 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 中实现冒泡排序,可以通过数据绑定和响应式特性动态展示排序过程。以下是一个完整的实现示例,包含代码和详细说明。 数据准备 在 Vue 的 data 中定义一个数组作为…

vue异步组建实现原理

vue异步组建实现原理

Vue 异步组件实现原理 Vue 的异步组件允许将组件按需加载,通常用于代码分割或延迟加载非关键组件。其核心原理基于 Promise 和动态导入。 基本实现方式 通过 defineAsyncComp…

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogres…

vue   实现单选

vue 实现单选

Vue 实现单选功能 在 Vue 中实现单选功能可以通过多种方式,以下是几种常见的方法: 使用原生 <input type="radio"> 绑定 v-model 通过 v-model…

vue 实现复选

vue 实现复选

Vue 实现复选功能 在 Vue 中实现复选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动收集用户选择的复选框值。…

vue实现摘要

vue实现摘要

Vue 实现摘要的方法 在 Vue 中实现文本摘要功能通常涉及截取文本的前部分内容并添加省略号。可以通过计算属性、过滤器或自定义指令来实现。 计算属性实现 在 Vue 组件中定义一个计算属性,用于截…