当前位置:首页 > VUE

vue 看板实现

2026-01-18 13:44:04VUE

Vue 看板实现方法

基础结构搭建

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

vue 看板实现

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

拖拽功能实现

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

vue 看板实现

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

vue实现钟表

vue实现钟表

使用 Vue 实现动态钟表 以下是一个基于 Vue 3 的动态钟表实现方案,包含时分秒指针和数字时间显示。 模板部分 <template> <div class="cloc…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue datepicker 实现

vue datepicker 实现

实现 Vue Datepicker 的基本方法 在 Vue 项目中实现日期选择功能,可以使用第三方库如 vue-datepicker 或 v-calendar。以下是两种常见实现方式: 安装 vue…

vue代理实现

vue代理实现

Vue 代理实现方法 在 Vue 项目中,配置代理可以解决开发环境下的跨域问题,通常通过修改 vue.config.js 文件实现。以下是几种常见的代理配置方式: 基础代理配置 在 vue.conf…

javascript实现vue

javascript实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,主要包括数据绑定、响应式系统和虚拟 DOM。以下是一个简化的实现示例。 数据响应式系统 通过 Object.de…