在电子商务网站中,产品列表页面是一个至关重要的组成部分,它允许用户浏览和搜索产品。本文将指导你使用 Vue.js 和 Tailwind CSS 构建一个简单的产品列表页面,展示产品图片、名称、价格和评级等信息。
该代码实现了以下功能:
import { ref } from 'vue'
ref
函数用于创建响应式数据。
const data = ref([
{
id: 1,
name: 'Rocking Chair',
price: 105,
rating: 4.5,
sales: 8374,
image: 'https://source.unsplash.com/random/300x300'
},
// ...
])
data
是一个响应式数组,包含产品信息。
<div class="grid grid-cols-1 gap-y-10 sm:grid-cols-2 gap-x-6 lg:grid-cols-3 xl:grid-cols-4 xl:gap-x-8">
<div v-for="product in data" :key="product.id" class="group relative">
<div class="w-full min-h-80 bg-gray-200 aspect-w-1 aspect-h-1 rounded-md overflow-hidden group-hover:opacity-75 lg:h-80 lg:aspect-none">
<img :src="product.image" alt="Chair" class="w-full h-full object-center object-cover lg:w-full lg:h-full" />
</div>
<div class="mt-4 flex justify-between">
<div>
<h3 class="text-sm text-gray-700">
<a :href="'/product/' + product.id">
<span aria-hidden="true" class="absolute inset-0"></span>
{{ product.name }}
</a>
</h3>
<p class="mt-1 text-sm text-gray-500">{{ product.rating }} | {{ product.sales }} sold</p>
</div>
<p class="text-sm font-medium text-gray-900">{{ product.price }}</p>
</div>
</div>
</div>
v-for
指令循环遍历 data
数组并渲染每个产品。group
类将产品图片和详细信息分组在一起。group-hover:opacity-75
类在悬停时降低产品的透明度。a
标签链接到产品详情页。.group:hover {
opacity: 0.75;
}
此 CSS 规则将悬停时的产品透明度设置为 75%。