当前位置:首页 > VUE

vue实现卡片列表

2026-03-10 02:34:18VUE

实现卡片列表的基本结构

使用 Vue 的 v-for 指令动态渲染卡片列表。假设数据存储在 cards 数组中,每个卡片包含 titledescriptionimage 字段。

<template>
  <div class="card-list">
    <div v-for="(card, index) in cards" :key="index" class="card">
      <img :src="card.image" :alt="card.title" />
      <h3>{{ card.title }}</h3>
      <p>{{ card.description }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      cards: [
        { title: "Card 1", description: "Description 1", image: "image1.jpg" },
        { title: "Card 2", description: "Description 2", image: "image2.jpg" },
      ],
    };
  },
};
</script>

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

从 API 动态加载数据

通过 axiosfetch 从后端接口获取卡片数据,并在 mounted 钩子中加载。

vue实现卡片列表

<script>
import axios from "axios";

export default {
  data() {
    return {
      cards: [],
    };
  },
  async mounted() {
    try {
      const response = await axios.get("https://api.example.com/cards");
      this.cards = response.data;
    } catch (error) {
      console.error("Failed to fetch cards:", error);
    }
  },
};
</script>

添加交互功能

为卡片添加点击事件或悬停效果,提升用户体验。

vue实现卡片列表

<template>
  <div class="card-list">
    <div 
      v-for="(card, index) in cards" 
      :key="index" 
      class="card"
      @click="handleCardClick(card)"
      @mouseover="hover = true"
      @mouseleave="hover = false"
      :class="{ 'card-hover': hover }"
    >
      <img :src="card.image" :alt="card.title" />
      <h3>{{ card.title }}</h3>
      <p>{{ card.description }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      hover: false,
    };
  },
  methods: {
    handleCardClick(card) {
      console.log("Card clicked:", card);
      // 可以跳转到详情页或触发其他逻辑
    },
  },
};
</script>

<style scoped>
.card-hover {
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
  transform: translateY(-4px);
  transition: all 0.3s ease;
}
</style>

使用组件化拆分

将卡片封装为独立组件(如 CardItem.vue),提高代码复用性。

<!-- CardItem.vue -->
<template>
  <div class="card" @click="$emit('card-click', card)">
    <img :src="card.image" :alt="card.title" />
    <h3>{{ card.title }}</h3>
    <p>{{ card.description }}</p>
  </div>
</template>

<script>
export default {
  props: {
    card: Object,
  },
};
</script>
<!-- ParentComponent.vue -->
<template>
  <div class="card-list">
    <CardItem 
      v-for="(card, index) in cards" 
      :key="index" 
      :card="card"
      @card-click="handleCardClick"
    />
  </div>
</template>

<script>
import CardItem from "./CardItem.vue";

export default {
  components: { CardItem },
  methods: {
    handleCardClick(card) {
      console.log("Card clicked:", card);
    },
  },
};
</script>

响应式布局优化

通过 CSS Grid 或媒体查询适配不同屏幕尺寸。

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

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

标签: 卡片列表
分享给朋友:

相关文章

vue 实现卡片拖动

vue 实现卡片拖动

Vue 实现卡片拖动的几种方法 使用 Vue 实现卡片拖动可以通过多种方式实现,以下是几种常见的方法: 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 d…

vue实现按卡片轮播

vue实现按卡片轮播

实现卡片轮播的基本思路 在Vue中实现卡片轮播通常需要结合轮播组件库或自定义滑动动画效果。核心逻辑包括动态渲染卡片、处理滑动事件、计算当前展示的卡片位置。 使用第三方库(Swiper) 安装Swip…

vue实现文本列表

vue实现文本列表

Vue 实现文本列表的方法 Vue 可以通过多种方式实现文本列表的渲染和管理,以下是几种常见的方法: 使用 v-for 指令渲染列表 通过 v-for 指令可以动态渲染数组或对象中的文本列表。 &…

vue实现竖向列表

vue实现竖向列表

Vue 实现竖向列表的方法 使用 v-for 指令 通过 Vue 的 v-for 指令可以轻松渲染一个竖向列表。假设有一个数组 items,可以通过以下方式渲染: <template>…

vue实现卡片拖拽

vue实现卡片拖拽

Vue 实现卡片拖拽的方法 使用 HTML5 拖放 API HTML5 提供了原生拖放 API,结合 Vue 可以轻松实现拖拽功能。以下是一个基本实现示例: <template> &…

vue实现列表demo

vue实现列表demo

以下是一个基于 Vue.js 的列表实现示例,包含基础功能与关键代码解析: 基础列表渲染 <template> <div> <ul>…