本代码用于构建一个响应式的卡片布局,适用于展示产品、文章或任何其他需要以视觉吸引力的方式呈现的内容。该布局可在各种设备和屏幕尺寸上良好显示,为用户提供一致且愉悦的体验。
该代码使用Vue.js和Tailwind CSS构建,具有以下基本功能:
首先,需要安装Vue.js和Tailwind CSS依赖项:
npm install vue tailwindcss
接下来,创建一个名为Card.vue
的Vue组件,该组件将定义单个卡片的结构和行为:
<template>
<div class="group block max-w-xs mx-auto rounded-lg border border-gray-200 p-6 hover:bg-gray-100">
<div class="flex items-center justify-center w-full h-full rounded-md bg-gray-100">
<img :src="image" alt="" class="w-full h-full object-center object-cover rounded-md" />
</div>
<div class="mt-4 text-center">
<h3 class="text-sm text-gray-700 font-medium group-hover:text-gray-900">{{ title }}</h3>
<p class="mt-2 text-sm text-gray-500">{{ description }}</p>
</div>
</div>
</template>
<script>
export default {
props: ['image', 'title', 'description']
}
</script>
在这个组件中,我们使用了Tailwind CSS类来定义卡片的样式,并通过props接收图像、标题和描述数据。
接下来,创建一个名为App.vue
的主应用程序文件,该文件将包含卡片列表和分页控件:
<template>
<div>
<div class="bg-white">
<div class="max-w-7xl mx-auto py-16 px-4 sm:px-6 lg:px-8">
<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">
<Card v-for="card in cards" :key="card.id" :image="card.image" :title="card.title" :description="card.description" />
</div>
</div>
</div>
<div class="bg-gray-100">
<div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8">
<nav aria-label="Pagination">
<ul class="flex items-center justify-center">
<li v-for="page in pages" :key="page">
<a :href="'#page-' + page" class="block py-3 px-5 rounded-md text-base font-medium text-gray-500 hover:text-gray-900">
<span v-if="page === currentPage" class="z-10 bg-indigo-500 border-indigo-500 text-white">{{ page }}</span>
<span v-else>{{ page }}</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
</template>
<script>
import Card from './Card.vue'
export default {
components: { Card },
data() {
return {
cards: [
{ id: 1, image: 'image1.jpg', title: 'Card 1', description: 'Lorem ipsum dolor sit amet...' },
{ id: 2, image: 'image2.jpg', title: 'Card 2', description: 'Lorem ipsum dolor sit amet...' },
{ id: 3, image: 'image3.jpg', title: 'Card 3', description: 'Lorem ipsum dolor sit amet...' },
{ id: 4, image: 'image4.jpg', title: 'Card 4', description: 'Lorem ipsum dolor sit amet...' },
{ id: 5, image: 'image5.jpg', title: 'Card 5', description: 'Lorem ipsum dolor sit amet...' },
{ id: 6, image: 'image6.jpg', title: 'Card 6', description: 'Lorem ipsum dolor sit amet...' },
{ id: 7, image: 'image7.jpg', title: 'Card 7', description: 'Lorem ipsum dolor sit amet...' },
{ id: 8, image: 'image8.jpg', title: 'Card 8', description: 'Lorem ipsum dolor sit amet...' },
{ id: 9, image: 'image9.jpg', title: 'Card 9', description: 'Lorem ipsum dolor sit amet...' },
{ id: 10, image: 'image10.jpg', title: 'Card 10', description: 'Lorem ipsum dolor sit amet...' }
],
currentPage: 1,
pages: [1, 2, 3]
}
}
}
</script>
在这个文件中,我们使用v-for
指令迭代卡片列表并渲染Card
组件。我们还创建了分页控件,用户可以通过单击页面号导航到不同的卡片页面。
最后,需要在tailwind.config.js
文件中设置Tailwind CSS:
module.exports = {
content: ['./index.html', './App.vue'],
theme: {
extend: {}
},
plugins: []
}
这段代码成功实现了响应式卡片布局,展示了Vue.js和Tailwind CSS在构建现代化、用户友好的web应用程序方面的强大功能。
未来,该卡片功能可以进一步拓展和优化: