当前位置:首页 > 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实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue实现抽奖

vue实现抽奖

Vue 实现抽奖功能 基本抽奖逻辑 创建一个Vue组件,包含奖品列表、抽奖按钮和结果显示区域。使用随机数生成器选择奖品。 <template> <div> <…

vue实现ssr

vue实现ssr

Vue 实现 SSR(服务端渲染) Vue 的服务端渲染(SSR)允许在服务器端生成完整的 HTML 内容,再发送到客户端,提升首屏加载速度和 SEO 友好性。以下是实现 Vue SSR 的关键步骤和…

vue搜索功能实现

vue搜索功能实现

Vue搜索功能实现方法 在Vue中实现搜索功能可以通过多种方式完成,以下是几种常见的方法: 使用计算属性实现搜索 计算属性非常适合处理需要根据输入值动态过滤数据的情况。创建一个计算属性,根据搜索关键…

vue实现子表格

vue实现子表格

Vue 实现子表格的方法 在 Vue 中实现子表格可以通过多种方式完成,以下是几种常见的方法: 使用嵌套组件 创建一个父表格组件和一个子表格组件,通过 props 将数据传递给子表格组件。父表格的每…