当前位置:首页 > VUE

vue实现动态卡片

2026-02-18 21:35:33VUE

Vue 动态卡片实现方法

基础实现(静态数据)

创建一个 Vue 组件,使用 v-for 循环渲染卡片列表。卡片数据可以存储在组件的 data 属性中。

<template>
  <div class="card-container">
    <div v-for="(card, index) in cards" :key="index" class="card">
      <h3>{{ card.title }}</h3>
      <p>{{ card.content }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cards: [
        { title: 'Card 1', content: 'Content for card 1' },
        { title: 'Card 2', content: 'Content for card 2' }
      ]
    }
  }
}
</script>

<style>
.card-container {
  display: flex;
  gap: 16px;
}
.card {
  border: 1px solid #ddd;
  padding: 16px;
  border-radius: 8px;
}
</style>

动态数据加载

从 API 获取卡片数据,使用 axios 或其他 HTTP 客户端库。

<script>
import axios from 'axios'

export default {
  data() {
    return {
      cards: []
    }
  },
  async created() {
    const response = await axios.get('https://api.example.com/cards')
    this.cards = response.data
  }
}
</script>

交互功能实现

vue实现动态卡片

为卡片添加点击事件和其他交互功能。

<template>
  <div class="card-container">
    <div 
      v-for="(card, index) in cards" 
      :key="index" 
      class="card"
      @click="handleCardClick(card)"
      :class="{ 'active': card.isActive }"
    >
      <h3>{{ card.title }}</h3>
      <p>{{ card.content }}</p>
      <button @click.stop="removeCard(index)">Remove</button>
    </div>
  </div>
</template>

<script>
export default {
  methods: {
    handleCardClick(card) {
      card.isActive = !card.isActive
    },
    removeCard(index) {
      this.cards.splice(index, 1)
    }
  }
}
</script>

动画效果

使用 Vue 的过渡系统为卡片添加动画效果。

vue实现动态卡片

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

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

响应式设计

使用 CSS 媒体查询确保卡片在不同屏幕尺寸下显示良好。

.card-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
}

@media (max-width: 768px) {
  .card-container {
    grid-template-columns: 1fr;
  }
}

可复用组件

将卡片拆分为独立组件以便复用。

<!-- CardComponent.vue -->
<template>
  <div class="card" @click="$emit('card-click', card)">
    <slot></slot>
  </div>
</template>

<!-- ParentComponent.vue -->
<template>
  <card-component 
    v-for="card in cards" 
    :key="card.id"
    @card-click="handleCardClick"
  >
    <h3>{{ card.title }}</h3>
    <p>{{ card.content }}</p>
  </card-component>
</template>

标签: 卡片动态
分享给朋友:

相关文章

vue 实现动态样式

vue 实现动态样式

动态样式绑定方法 在Vue中实现动态样式主要通过v-bind:class和v-bind:style指令完成,以下是具体实现方式: 类名绑定 <div :class="{ active: is…

vue 实现动态路由

vue 实现动态路由

动态路由的实现方法 Vue中实现动态路由通常涉及以下关键步骤,结合Vue Router的API和异步加载逻辑完成。 基础配置 安装Vue Router并初始化路由实例。在router/index.j…

vue实现动态隐藏

vue实现动态隐藏

Vue 实现动态隐藏的方法 在 Vue 中实现动态隐藏可以通过多种方式实现,以下是一些常见的方法: 使用 v-if 指令 v-if 指令根据表达式的真假值来条件性地渲染元素。当表达式为 false…

vue实现动态刷新

vue实现动态刷新

Vue 实现动态刷新方法 使用 v-if 或 v-show 控制显示 通过条件渲染指令动态切换组件或元素的显示状态,触发重新渲染。 <template> <div>…

vue实现卡片列表

vue实现卡片列表

Vue 实现卡片列表 使用 v-for 动态渲染卡片列表 通过 Vue 的 v-for 指令可以动态渲染卡片列表,数据通常存储在组件的 data 或通过 API 获取。 <template&g…

vue实现动态浮出

vue实现动态浮出

Vue 实现动态浮出效果 动态浮出效果通常指根据用户交互(如点击、悬停)动态显示隐藏的浮层(如弹窗、菜单、提示框)。以下是几种实现方式: 使用 v-show 或 v-if 控制显示隐藏 通过 Vue…