当前位置:首页 > VUE

vue实现添加卡片

2026-02-19 22:10:48VUE

实现添加卡片功能

在Vue中实现添加卡片功能通常涉及组件设计、数据管理和用户交互。以下是具体实现方法:

创建卡片组件

新建一个卡片组件Card.vue

<template>
  <div class="card">
    <h3>{{ title }}</h3>
    <p>{{ content }}</p>
    <button @click="$emit('delete')">删除</button>
  </div>
</template>

<script>
export default {
  props: {
    title: String,
    content: String
  }
}
</script>

<style scoped>
.card {
  border: 1px solid #ddd;
  padding: 15px;
  margin: 10px;
  border-radius: 5px;
}
</style>

管理卡片数据

在父组件中管理卡片数据:

<template>
  <div>
    <button @click="addCard">添加卡片</button>
    <div v-for="(card, index) in cards" :key="index">
      <Card 
        :title="card.title"
        :content="card.content"
        @delete="deleteCard(index)"
      />
    </div>
  </div>
</template>

<script>
import Card from './Card.vue'

export default {
  components: { Card },
  data() {
    return {
      cards: []
    }
  },
  methods: {
    addCard() {
      this.cards.push({
        title: `卡片 ${this.cards.length + 1}`,
        content: '这是卡片内容'
      })
    },
    deleteCard(index) {
      this.cards.splice(index, 1)
    }
  }
}
</script>

添加表单输入

如果需要用户自定义卡片内容,可以添加表单:

<template>
  <div>
    <input v-model="newCard.title" placeholder="标题">
    <textarea v-model="newCard.content" placeholder="内容"></textarea>
    <button @click="addCard">添加卡片</button>
    <!-- 卡片列表 -->
  </div>
</template>

<script>
export default {
  data() {
    return {
      newCard: {
        title: '',
        content: ''
      },
      cards: []
    }
  },
  methods: {
    addCard() {
      if (this.newCard.title.trim()) {
        this.cards.push({...this.newCard})
        this.newCard.title = ''
        this.newCard.content = ''
      }
    }
  }
}
</script>

使用Vuex管理状态

对于大型应用,可以使用Vuex集中管理卡片状态:

// store.js
export default new Vuex.Store({
  state: {
    cards: []
  },
  mutations: {
    ADD_CARD(state, card) {
      state.cards.push(card)
    },
    DELETE_CARD(state, index) {
      state.cards.splice(index, 1)
    }
  },
  actions: {
    addCard({ commit }, card) {
      commit('ADD_CARD', card)
    },
    deleteCard({ commit }, index) {
      commit('DELETE_CARD', index)
    }
  }
})

动画效果

为卡片添加过渡动画:

vue实现添加卡片

<template>
  <transition-group name="card-list" tag="div">
    <Card v-for="(card, index) in cards" :key="card.id" />
  </transition-group>
</template>

<style>
.card-list-enter-active, .card-list-leave-active {
  transition: all 0.5s;
}
.card-list-enter, .card-list-leave-to {
  opacity: 0;
  transform: translateY(30px);
}
</style>

这些方法涵盖了Vue中添加卡片功能的基本实现,可以根据具体需求进行组合或扩展。

标签: 卡片vue
分享给朋友:

相关文章

vue实现markdown

vue实现markdown

Vue 实现 Markdown 编辑器 在 Vue 中实现 Markdown 编辑器可以通过集成第三方库或自定义解析器完成。以下是两种常见方法: 使用第三方库(如 marked 或 markdown…

vue 实现跳转

vue 实现跳转

Vue 实现页面跳转的方法 在 Vue 中实现页面跳转通常可以通过以下几种方式实现,具体选择取决于项目需求和技术栈(如是否使用 Vue Router)。 使用 Vue Router 进行编程式导航…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…

vue实现录音

vue实现录音

Vue 实现录音功能 在 Vue 中实现录音功能可以通过浏览器提供的 MediaRecorder API 完成。以下是具体实现方法: 引入依赖 确保项目支持现代浏览器 API,无需额外安装库。若需兼…

vue实现投票

vue实现投票

Vue实现投票功能 数据准备 在Vue组件的data中定义投票相关数据,包括选项列表和当前选中状态: data() { return { options: [ { id: 1…

vue实现选择置顶

vue实现选择置顶

Vue 实现选择置顶功能 在 Vue 中实现选择置顶功能,可以通过操作数据数组或结合 CSS 样式来实现。以下是几种常见的实现方法: 数组排序法 通过操作数据数组,将被选中的项移动到数组首位: /…