当前位置:首页 > VUE

vue实现卡片列表

2026-01-17 20:50:04VUE

Vue 实现卡片列表

使用 v-for 动态渲染卡片列表

通过 Vue 的 v-for 指令可以动态渲染卡片列表,数据通常存储在组件的 data 或通过 API 获取。

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

<script>
export default {
  data() {
    return {
      cards: [
        { title: '卡片1', description: '描述内容1' },
        { title: '卡片2', description: '描述内容2' },
        { title: '卡片3', description: '描述内容3' }
      ]
    }
  }
}
</script>

<style scoped>
.card-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 20px;
}

.card {
  border: 1px solid #ddd;
  padding: 16px;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
</style>

使用组件化拆分卡片

将卡片拆分为单独的组件,提高代码复用性和可维护性。

<template>
  <div class="card-list">
    <CardItem v-for="(card, index) in cards" :key="index" :card="card" />
  </div>
</template>

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

export default {
  components: { CardItem },
  data() {
    return {
      cards: [
        { title: '卡片1', description: '描述内容1' },
        { title: '卡片2', description: '描述内容2' },
        { title: '卡片3', description: '描述内容3' }
      ]
    }
  }
}
</script>

CardItem.vue 文件内容:

vue实现卡片列表

<template>
  <div class="card">
    <h3>{{ card.title }}</h3>
    <p>{{ card.description }}</p>
  </div>
</template>

<script>
export default {
  props: {
    card: {
      type: Object,
      required: true
    }
  }
}
</script>

<style scoped>
.card {
  border: 1px solid #ddd;
  padding: 16px;
  border-radius: 8px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
</style>

响应式布局与样式优化

使用 CSS Grid 或 Flexbox 实现响应式布局,确保卡片在不同屏幕尺寸下表现良好。

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

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

从 API 获取卡片数据

通过异步请求获取卡片数据,增强动态性。

vue实现卡片列表

<template>
  <div class="card-list">
    <CardItem v-for="(card, index) in cards" :key="index" :card="card" />
  </div>
</template>

<script>
import CardItem from './CardItem.vue'
import axios from 'axios'

export default {
  components: { CardItem },
  data() {
    return {
      cards: []
    }
  },
  async created() {
    try {
      const response = await axios.get('https://api.example.com/cards')
      this.cards = response.data
    } catch (error) {
      console.error('获取卡片数据失败:', error)
    }
  }
}
</script>

添加卡片交互功能

为卡片添加点击事件或其他交互功能,提升用户体验。

<template>
  <div class="card-list">
    <CardItem 
      v-for="(card, index) in cards" 
      :key="index" 
      :card="card" 
      @click="handleCardClick(card)" 
    />
  </div>
</template>

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

export default {
  components: { CardItem },
  data() {
    return {
      cards: [
        { id: 1, title: '卡片1', description: '描述内容1' },
        { id: 2, title: '卡片2', description: '描述内容2' },
        { id: 3, title: '卡片3', description: '描述内容3' }
      ]
    }
  },
  methods: {
    handleCardClick(card) {
      console.log('点击卡片:', card)
      // 可以跳转到详情页或其他操作
    }
  }
}
</script>

CardItem.vue 中触发点击事件:

<template>
  <div class="card" @click="$emit('click', card)">
    <h3>{{ card.title }}</h3>
    <p>{{ card.description }}</p>
  </div>
</template>

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

相关文章

vue实现WiFi列表

vue实现WiFi列表

获取WiFi列表的Vue实现 使用Vue获取WiFi列表需要结合浏览器API或后端服务,因为浏览器出于安全限制无法直接访问系统WiFi信息。以下是两种常见实现方式: 方法一:通过Web API获取附…

vue实现探探卡片

vue实现探探卡片

Vue 实现探探卡片效果 探探卡片的交互效果主要包括卡片堆叠、左右滑动、缩放和旋转动画。以下是基于 Vue 3 的实现方法: 核心组件结构 使用 v-for 渲染卡片列表,通过 CSS 绝对定位实现…

vue实现列表点击

vue实现列表点击

Vue 实现列表点击的方法 在 Vue 中实现列表点击功能通常涉及 v-for 渲染列表和 v-on(或 @)绑定点击事件。以下是几种常见实现方式: 基础列表点击 使用 v-for 渲染列表,并通过…

vue实现卡片翻转

vue实现卡片翻转

Vue 实现卡片翻转效果 卡片翻转效果可以通过 CSS 3D 变换和 Vue 的过渡系统实现。以下是两种常见实现方式: 基础 CSS 3D 翻转 <template> <d…

vue实现多级列表

vue实现多级列表

实现多级列表的两种常见方法 递归组件法 通过组件递归调用自身实现嵌套渲染,适合动态层级数据。 定义组件时通过name属性使其可递归调用。 模板中使用v-for遍历数据,嵌套部分通过条件渲染递…

vue实现多选列表

vue实现多选列表

Vue 实现多选列表的方法 使用 v-model 绑定数组 在 Vue 中,可以利用 v-model 指令绑定一个数组来实现多选功能。当用户选择多个选项时,选中的值会自动添加到数组中。 <te…