当前位置:首页 > VUE

vue实现商品卡片

2026-01-18 13:45:37VUE

Vue 实现商品卡片

在 Vue 中实现商品卡片可以通过组件化的方式完成,以下是一个完整的实现方案:

商品卡片组件

<template>
  <div class="product-card">
    <div class="product-image">
      <img :src="product.image" :alt="product.name" />
      <span v-if="product.discount" class="discount-tag">
        {{ product.discount }}% OFF
      </span>
    </div>
    <div class="product-info">
      <h3 class="product-name">{{ product.name }}</h3>
      <div class="price-section">
        <span class="current-price">${{ product.price }}</span>
        <span v-if="product.originalPrice" class="original-price">
          ${{ product.originalPrice }}
        </span>
      </div>
      <div class="rating">
        <span v-for="star in 5" :key="star">
          <i :class="star <= product.rating ? 'fas fa-star' : 'far fa-star'"></i>
        </span>
      </div>
      <button class="add-to-cart" @click="addToCart">Add to Cart</button>
    </div>
  </div>
</template>

<script>
export default {
  props: {
    product: {
      type: Object,
      required: true
    }
  },
  methods: {
    addToCart() {
      this.$emit('add-to-cart', this.product)
    }
  }
}
</script>

<style scoped>
.product-card {
  width: 250px;
  border: 1px solid #eee;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 8px rgba(0,0,0,0.1);
  transition: transform 0.3s ease;
  margin: 10px;
}

.product-card:hover {
  transform: translateY(-5px);
}

.product-image {
  position: relative;
  height: 200px;
  overflow: hidden;
}

.product-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.discount-tag {
  position: absolute;
  top: 10px;
  right: 10px;
  background-color: #ff5722;
  color: white;
  padding: 5px 10px;
  border-radius: 4px;
  font-size: 12px;
}

.product-info {
  padding: 15px;
}

.product-name {
  margin: 0 0 10px;
  font-size: 16px;
  color: #333;
}

.price-section {
  margin-bottom: 10px;
}

.current-price {
  font-size: 18px;
  font-weight: bold;
  color: #ff5722;
}

.original-price {
  font-size: 14px;
  text-decoration: line-through;
  color: #999;
  margin-left: 8px;
}

.rating {
  color: #ffc107;
  margin-bottom: 15px;
}

.add-to-cart {
  width: 100%;
  padding: 8px;
  background-color: #4CAF50;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
  transition: background-color 0.3s;
}

.add-to-cart:hover {
  background-color: #45a049;
}
</style>

使用商品卡片组件

<template>
  <div class="product-list">
    <product-card 
      v-for="product in products" 
      :key="product.id" 
      :product="product"
      @add-to-cart="handleAddToCart"
    />
  </div>
</template>

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

export default {
  components: {
    ProductCard
  },
  data() {
    return {
      products: [
        {
          id: 1,
          name: 'Wireless Headphones',
          price: 99.99,
          originalPrice: 129.99,
          image: 'https://example.com/headphones.jpg',
          rating: 4,
          discount: 20
        },
        {
          id: 2,
          name: 'Smart Watch',
          price: 199.99,
          image: 'https://example.com/watch.jpg',
          rating: 5
        }
      ]
    }
  },
  methods: {
    handleAddToCart(product) {
      console.log('Added to cart:', product)
      // 这里可以添加购物车逻辑
    }
  }
}
</script>

<style>
.product-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
}
</style>

功能扩展建议

  1. 响应式设计:可以添加媒体查询使卡片在不同屏幕尺寸下自适应

  2. 动画效果:添加加载动画或悬停动画增强用户体验

  3. 骨架屏:在数据加载时显示骨架屏提高用户体验

  4. 懒加载:对图片实现懒加载优化性能

  5. 国际化:添加多语言支持

  6. 主题切换:实现暗黑模式等主题切换功能

    vue实现商品卡片

注意事项

  • 确保图片路径正确
  • 根据实际项目调整样式和结构
  • 产品数据应该来自API调用而非硬编码
  • 添加适当的错误处理机制

标签: 卡片商品
分享给朋友:

相关文章

vue实现搜索商品

vue实现搜索商品

Vue 实现商品搜索功能 在 Vue 中实现商品搜索功能,可以通过以下步骤完成。假设已有商品列表数据,需要实现前端搜索过滤功能。 数据准备 准备商品列表数据,通常从 API 获取或本地定义: da…

vue实现商品全选

vue实现商品全选

实现全选功能的基本思路 在Vue中实现商品全选功能,通常需要维护一个商品列表数据和一个选中状态数组。通过计算属性判断是否全选,通过方法控制全选或取消全选。 定义数据模型 data() {…

vue实现卡片拖动

vue实现卡片拖动

Vue 实现卡片拖动的几种方法 使用 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以在 Vue 中直接使用。通过 draggable 属性标记可拖动的元素,并监听 dragsta…

vue实现商品累加

vue实现商品累加

Vue实现商品累加功能 商品累加功能通常用于购物车或商品列表,允许用户增减商品数量。以下是实现方法: 数据绑定与基础累加 在Vue组件中定义商品数据,使用v-model绑定数量输入框: data(…

vue实现卡片左右滑动

vue实现卡片左右滑动

实现卡片左右滑动的方法 使用Vue实现卡片左右滑动可以通过多种方式,以下是几种常见的方法: 使用CSS和Touch事件 通过监听touchstart、touchmove和touchend事件…

vue element 实现商品sku

vue element 实现商品sku

商品SKU实现方法 在Vue和Element UI中实现商品SKU功能,可以通过以下步骤完成: 数据结构设计 商品SKU通常需要处理多个属性组合,每个属性有不同的选项。数据结构可以设计为:…