在社交媒体平台中,信息流卡片是用户浏览和互动内容的主要形式。它展示了用户的帖子、图像、视频等内容,并提供点赞、评论、分享等交互功能。
这段 Vue.js 代码实现了社交媒体信息流卡片的基本功能,包括:
const posts = ref([
{
id: 1,
user: {
id: 1,
name: 'Anna Smith',
avatar: 'https://source.unsplash.com/random/40x40'
},
content: '...',
image: '...',
likes: 10,
comments: 5,
shares: 2
},
// ...
])
posts
是一个可响应式数组,包含了所有帖子数据。每个帖子对象包含用户、内容、图片、点赞数、评论数和分享数等信息。
<div class="max-w-3xl mx-auto p-4">
<div class="bg-white shadow rounded-lg p-4">
<div class="flex items-center justify-between">
<div class="text-lg font-semibold">Recent Posts</div>
<div>
<button class="text-blue-500 hover:text-blue-700">See all</button>
</div>
</div>
<!-- 循环渲染帖子 -->
<div class="mt-4">
<!-- ... -->
</div>
</div>
</div>
<div class="max-w-3xl mx-auto p-4">
是信息流卡片的容器,它包含了近期帖子和热门帖子的部分。<div class="bg-white shadow rounded-lg p-4">
是每个帖子的卡片。
<div class="flex items-center">
<img
class="w-10 h-10 rounded-full"
src="https://source.unsplash.com/random/40x40"
alt="avatar"
/>
<div class="ml-4">
<div class="text-sm font-semibold">Anna Smith</div>
<div class="text-xs text-gray-500">2 hours ago</div>
</div>
</div>
<div class="mt-2">
<img
class="w-full h-40 object-cover rounded-lg"
src="https://source.unsplash.com/random/640x480"
alt="image"
/>
</div>
<div class="mt-4">
<div class="flex items-center">
<div class="flex-1">
<button class="text-blue-500 hover:text-blue-700">Like</button>
</div>
<div>
<button class="text-blue-500 hover:text-blue-700">Comment</button>
</div>
<div>
<button class="text-blue-500 hover:text-blue-700">Share</button>
</div>
</div>
</div>
这段代码渲染了每个帖子的用户头像、姓名、发帖时间、帖子内容、图片和交互按钮。
<button class="text-blue-500 hover:text-blue-700" @click="likePost">Like</button>
<button class="text-blue-500 hover:text-blue-700" @click="commentPost">Comment</button>
<button class="text-blue-500 hover:text-blue-700" @click="sharePost">Share</button>
这些按钮绑定了 likePost()
、commentPost()
和 sharePost()
方法,它们可以执行点赞、评论和分享操作。
通过这段代码,我们实现了社交媒体信息流卡片的基本功能。在开发过程中,我们学到了 Vue.js 中数据绑定、循环渲染和交互功能的实现方法。
未来,我们可以对该卡片功能进行以下拓展和优化: