Vue3自定义文章列表组件

一、Vue3的代码展示

<template><div><div v-for="article in articles" :key="article.id" class="article-card"><div class="author-info"><img :src="article.avatar" alt="Author Avatar" class="avatar" /><div class="author-details"><span class="author-name">{{ article.username }}</span><span class="publish-time">{{ article.createTime }}</span></div></div><div class="article-details"><h3 class="article-title">{{ article.title }}</h3><p class="article-info">{{ article.summary }}</p></div><div class="article-stats"><span class="stat-item">查看数: {{ article.viewCount }}</span><span class="stat-item">点赞数: {{ article.likeCount }}</span><span class="stat-item">评论数: {{ article.commentCount }}</span></div></div></div>
</template>
<script setup>
const props = defineProps(['articles']);
</script>
<style scoped>
.article-card {border: 1px solid #ddd;padding: 16px;display: flex;flex-direction: column;align-items: flex-start;transition: background-color 0.3s; /* 添加过渡以实现平滑的颜色变化 */
}.article-card:hover {background-color: #fafafa; /* 在悬停时改变背景颜色 */
}.author-info {display: flex;align-items: center;margin-bottom: 8px;
}.avatar {width: 40px;height: 40px;border-radius: 50%;margin-right: 8px;
}.author-details {display: flex;align-items: baseline;
}.author-name {font-weight: bold;margin-right: 4px;
}.publish-time {color: #888;margin-left: 20px;
}.article-details {margin-bottom: 12px;display: flex;flex-wrap: wrap;flex-direction: column;/*background-color: #3fdbf0;*/text-align: left; /* Align content to the left */
}.article-title {margin-bottom: 2px;font-size: 20px;
}.article-info {color: #555;margin-bottom: 8px;font-size: 16px;
}.article-stats {display: flex;justify-content: space-between;color: #888;
}.stat-item {margin-right: 12px; 
}
</style>

二、 代码解读

HTML 模板部分:

  1. <template> 标签是 Vue.js 模板的开始。
  2. v-for="article in articles" 遍历 articles 数组中的每个 article
  3. :key="article.id" 用于标识每个循环中的元素,以便 Vue 可以高效地更新 DOM。
  4. class="article-card" 定义了一个文章卡片的样式。
  5. v-bind 用于动态地绑定元素的属性,例如 :src="article.avatar" 将文章作者的头像与 article.avatar 数据绑定。
  6. {{ expression }} 用于在模板中插入表达式的值。

JavaScript 部分:

  1. <script setup> 是 Vue 3 提供的新语法,用于编写组件的逻辑部分。
  2. const props = defineProps(['articles']); 用于声明接收来自父组件的 articles 属性。

CSS 部分:

  1. <style scoped> 表示样式仅对当前组件起作用。
  2. 样式定义了文章卡片的整体样式,作者信息的样式,文章详情的样式,以及文章统计信息的样式。
  3. :hover 选择器用于在鼠标悬停时改变文章卡片的背景颜色。
  4. 通过样式定义了作者头像、作者姓名、发布时间、文章标题、文章摘要等的样式。

三、结果展示

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/710857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android 验证启动模式

文章目录 Android 验证启动模式查看任务栈launchModestandardsingleTopsingleTasksingleInstance Intent标记FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TASK 和 FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP Android 验证启动模式 查看任务栈 可…

软考52-上午题-【数据库】-关系模式2

一、关系模式的回顾 见&#xff1a;软考38-上午题-【数据库】-关系模式 二、关系模式 2-1、关系模式的定义 示例&#xff1a; 念法&#xff1a;A——>B A决定B&#xff0c;或者&#xff0c;B依赖于A。 2-2、函数依赖 1、非平凡的函数依赖 如果X——>Y&#xff0c;&a…

Linux Shell脚本练习(三)

1、测试用户名与密码是否正确。 2、输出1-1000内的素数。 3、对 100 以内的所有正整数相加求和(1234...100)。 4、输出9*9 乘法表。 5、编写脚本,显示进度条。 、 6、输入三个数并进行升序排序

RocketMQ - 深入研究一下生产者到底如何发送消息的

1. 创建Topic的时候为何要指定MessageQueue数量 首先如果要搞明白生产者的工作原理,那么就必须先明白一个概念,MessageQueue是什么? 而要明白MessageQueue是什么,就必须把他跟Topic以及Broker综合起来看,才能搞明白。如果我们要使用RocketMQ,你先部署出来一套RocketMQ集…

C++高级面试题:解释 C++ 中的智能指针循环引用问题,并介绍如何解决它

解释 C 中的智能指针循环引用问题&#xff0c;并介绍如何解决它 智能指针循环引用问题指的是两个或多个对象之间相互持有对方的智能指针&#xff0c;导致内存泄漏的情况。当使用智能指针时&#xff0c;如果对象之间存在循环引用关系&#xff0c;可能会造成内存泄漏&#xff0c…

附详细答案,最新BAT大厂面试者整理的Android面试题目

前言 前几年移动互联网创业的风口&#xff0c;如今渐渐消失&#xff0c;移动互联网被巨头公司瓜分&#xff0c;一些创业公司倒闭了&#xff0c;Android 开发需求慢慢趋近于饱和。而当初移动互联网处于风口时&#xff0c;自学、转行以及培训机构出来了大量 Android 开发从业者&…

CSS-浮动,定位

1. 浮动 (float) CSS的定位机制有三种&#xff1a;普通流(标准流)&#xff0c;浮动和定位。 普通流就是一个网页内标签元素正常从上到下&#xff0c;从左到右排列顺序的意思&#xff0c;比如块级元素会独占一行&#xff0c;行内元素会按顺序依次前后排列&#xff1b;按照这种大…

docker 安装单机版 opengauss5.0.1

前言 因为官网的镜像直接安装不成功&#xff0c;所以才写的这边文章 1、下载openGauss 地址&#xff1a; https://opengauss.org/zh/download/ 下载名称为&#xff1a;openGauss-5.0.1-CentOS-64bit.tar.bz2 1.1、 下载gosu-amd64 下载 gosu-amd64 2、制作镜像(和官网保持一致)…

佛山50公里徒步组团|真北敏捷社区佛山敏捷DevOps社区

真北敏捷社区&佛山敏捷DevOps社区有两个宗旨&#xff0c;一是求知&#xff0c;二是连接。连接有识之士&#xff0c;同修友士之识。峨峨乎高山&#xff0c;洋洋乎流水。谈笑有鸿儒&#xff0c;往来无白丁。 《柳叶刀》上的研究显示&#xff0c;运动的情绪价值&#xff0c;相…

探索NebulaGraph:一个开源分布式图数据库的技术解析

1. 介绍 NebulaGraph的定位和用途 NebulaGraph是一款开源的分布式图数据库&#xff0c;专注于存储和处理大规模图数据。它的主要定位是为了解决图数据存储和分析的问题&#xff0c;能够处理节点和边数量巨大、结构复杂的图结构数据。NebulaGraph被设计用来应对各种领域的图数…

c语言求阶乘序列前N项和

本题要求编写程序&#xff0c;计算序列 1!2!3!⋯ 的前N项之和。 输入格式: 输入在一行中给出一个不超过12的正整数N。 输出格式: 在一行中输出整数结果。 输入样例: 5输出样例: 153 #include<stdio.h> int main() {int a,b,c0,d1;scanf("%d",&a);fo…

数据结构之树结构(下)

各种各样的大树 平衡二叉树 (AVL树) 普通二叉树存在的问题 左子树全部为空&#xff0c;从形式上看&#xff0c;更像一个单链表 插入速度没有影响 查询速度明显降低&#xff08;因为需要依次比较&#xff09;&#xff0c;不能发挥BST的优势&#xff0c;因为每次还需要比较左子…

javaWeb个人学习04

AOP核心概念: 连接点: JoinPoint, 可以被AOP控制的方法 通知: Advice 指哪些重复的逻辑&#xff0c;也就是共性功能(最终体现为一个方法) 切入点: PointCut, 匹配连接点的条件&#xff0c;通知仅会在切入点方法执行时被应用 目标对象: Target, 通知所应用的对象 通知类…

docker基线安全修复和容器逃逸修复

一、docker安全基线存在的问题和修复建议 1、将容器的根文件系统挂载为只读 修复建议&#xff1a; 添加“ --read-only”标志&#xff0c;以允许将容器的根文件系统挂载为只读。 可以将其与卷结合使用&#xff0c;以强制容器的过程仅写入要保留的位置。 可以使用命令&#x…

航拍无人机技术,航拍无人机方案详解,无人机摄影技术

航拍无人机是利用遥控技术和摄像设备&#xff0c;在空中进行拍摄和录像的无人机。这种无人机通常具有高清摄像设备、图像传输设备、GPS定位系统、智能控制系统等&#xff0c;可以轻松实现各种拍摄角度和高度&#xff0c;广泛应用于影视制作、旅游景区航拍、城市规划、环保监测等…

【数据结构与算法】回溯法解题20240301

这里写目录标题 一、78. 子集1、nums [1,2,3]为例把求子集抽象为树型结构2、回溯三部曲 二、90. 子集 II1、本题搜索的过程抽象成树形结构如下&#xff1a; 三、39. 组合总和1、回溯三部曲2、剪枝优化 四、LCR 082. 组合总和 II1、思路2、树形结构如图所示&#xff1a;3、回溯…

用vivado创建一个赛灵思AXI的IP核

一、新建一个管理IP的任务 二、设置板子&#xff0c;verilog语言和文件位置 三、创建新的IP核 添加一个axi-full的master接口和axi-full的slave接口 四、查看赛灵思AXI代码 第一个是axi的master接口代码&#xff0c;下面的是axi的slave接口代码 五、打包IP核以供后续使用 六、…

共享旅游卡:打开0费用旅游新纪元,探索40+精彩线路

随着现代生活节奏的加快&#xff0c;旅游成为了许多人释放压力、寻求乐趣的方式。然而&#xff0c;面对琳琅满目的旅游线路和不断上涨的旅游费用&#xff0c;许多人望而却步。 今天&#xff0c;我们要为您介绍一种颠覆传统旅游方式的创新产品——共享旅游卡。它不仅能让您以0费…

什么是双线服务器?

双线服务器是一种有着两条高速网络线路的主机服务器&#xff0c;通常又被称为双线独享服务器&#xff0c;双线服务器的出现提高了服务器的可靠性&#xff0c;因为双线服务器对数据与请求可以使用两条高速网络线路进行处理&#xff0c;对比于单线服务器&#xff0c;提高了服务器…

easyexcel字体加粗

public static void main(String[] args) { List dataList new ArrayList<>(); dataList.add(new Data(“Data 1”)); dataList.add(new Data(“Data 2”)); dataList.add(new Data(“Data 3”)); // 设置加粗字体WriteCellStyle boldCellStyle new WriteCellStyle();W…