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. 通过样式定义了作者头像、作者姓名、发布时间、文章标题、文章摘要等的样式。

三、结果展示

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue+SpringBoot打造海南旅游景点推荐系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 用户端2.2 管理员端 三、系统展示四、核心代码4.1 随机景点推荐4.2 景点评价4.3 协同推荐算法4.4 网站登录4.5 查询景点美食 五、免责说明 一、摘要 1.1 项目介绍 基于VueSpringBootMySQL的海南旅游推荐系统&#xff…

房贷计算器微信小程序原生语言

微信小程序: 房贷计算器 效果: 输入 300万 结果 还款明细 一共有3个页面 1、输入页面 2、结果页面 3、详情页面 1 index页面 index.wxml文件 <view class="text-black"><!--房屋总价--><view class="cu-bar bg-white solid-bottom"&…

计算机二级MySQL-错题、知识点合集02

计算机二级数据库 第2章 MySQL数据库基础 在SQL语言按功能的分类中&#xff0c;包括DDL、DML、DCL。数据定义语言&#xff08;DDL&#xff09;对各种数据库对象&#xff08;非数据&#xff09;进行创建、删除、修改&#xff1b;数据操纵语言&#xff08;DML&#xff09;对各种数…

源码的角度分析Vue2数据双向绑定原理

什么是双向绑定 我们先从单向绑定切入&#xff0c;其实单向绑定非常简单&#xff0c;就是把Model绑定到View&#xff0c;当我们用JavaScript代码更新Model时&#xff0c;View就会自动更新。那么双向绑定就可以从此联想到&#xff0c;即在单向绑定的基础上&#xff0c;用户更新…

压缩视频大小的软件有哪些?5款软件推荐

压缩视频大小的软件有哪些&#xff1f;随着高清摄像设备的普及和网络速度的不断提升&#xff0c;视频文件变得越来越庞大&#xff0c;动辄数百兆甚至数GB的大小常常让用户在分享和存储时感到头疼。幸运的是&#xff0c;市面上有许多优秀的视频压缩软件可以帮助我们轻松应对这一…

CDH6.3.1离线安装

一、从官方文档整体认识CDH 官方文档地址如下&#xff1a; CDH Overview | 6.3.x | Cloudera Documentation CDH是Apache Hadoop和相关项目中最完整、测试最全面、最受欢迎的发行版。CDH提供Hadoop的核心元素、可扩展存储和分布式计算&#xff0c;以及基于Web的用户界面和重…

使用docker方式测试部署django项目(客户催)

需求 1&#xff1a;已有django项目–weidanyewu 2&#xff1a;希望在服务器上测试部署–客户催 3&#xff1a;没完善django的启动 4&#xff1a;使用临时数据库进行演示 5&#xff1a;使用python3.10版本镜像 6&#xff1a;展示端口80 7&#xff1a;后台执行django程序 8&#…

js 面试 sort背后原理及排序使用方法

1 sort 概念 2 原理 之前版本是用的插入排序 和 快速排序。 现在用的是冒泡排序。 3 排序方式&#xff1a; 2-1 根据字符码点排序 2-2 从小到大或从大到小排序 2-3 对数组中的对象进行排序

android开发技术论文,Android中为什么需要Handler

前言 马爸爸总结了一句话&#xff1a;跳槽&#xff0c;要么是钱不到位&#xff0c;要么是受了委屈。 我给自己这次的跳槽经历做了一个分析&#xff0c;希望能对那些想换工作的朋友有所帮助。 许多朋友想换工作&#xff0c;但是对“换工作”的理解可能仅限于写简历、投简历、…

“智农”-数字乡村可视化

“智农”打造数字乡村可视化&#xff0c;结合乡村区域实际情况&#xff0c;以规划完善乡村机制体系和更好服务乡村振兴为目标&#xff0c;坚持可持续、可复制、可扩展的建设原则&#xff0c;着力解决农村信息孤岛&#xff0c;提高农村种植技术&#xff0c;加快农村信息化和产业…

ES系列之Logstash实战入门

概述 作为ELK技术栈一员&#xff0c;Logstash用于将数据采集到ES&#xff0c;通过简单配置就能把各种外部数据采集到索引中进行保存&#xff0c;可提高数据采集的效率。 原理 数据源提供的数据进入Logstash的管道后需要经过3个阶段&#xff1a; input&#xff1a;负责抽取数…

数据库常见理论常见面试题(总结)

一、前言 这里呢&#xff0c;博主会介绍一些平时关于数据库的理论的问题&#xff0c;比如数据库的三级模式两级映射、触发器、范式、存储过程、视图等等概念知识&#xff0c;但是像索引、事务、锁等内容&#xff0c;之前的文章就讲解过了&#xff0c;这里就不作过多的介绍了&am…

Google大模型Bard更名Gemini,现在实力如何?(VS gpt系列)

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍1、Gemini是什么&#xff1f;2、主要特点3、Gemini的版本4、应用潜力5、…

docker容器配置mysql5.7主从复制

介绍 本文将通过docker创建3个mysql数据库容器&#xff0c;实现数据库主从复制功能&#xff0c;三个数据库容器分别为主库mysql-master:3307&#xff0c;从库mysql-slave-01:3308&#xff0c;mysql-slave-02:3309。使用的是mysql5.7版本 1. 拉取mongo镜像 docker pull mysql…

springboot230基于Spring Boot在线远程考试系统的设计与实现

在线远程考试系统设计与实现 摘 要 信息数据从传统到当代&#xff0c;是一直在变革当中&#xff0c;突如其来的互联网让传统的信息管理看到了革命性的曙光&#xff0c;因为传统信息管理从时效性&#xff0c;还是安全性&#xff0c;还是可操作性等各个方面来讲&#xff0c;遇到…

学不动系列-git-hooks和husky+lintstage

git-hooks 为了保证提交的代码符合规范&#xff0c;可以在上传代码时进行校验。常用husky来协助进行代码提交时的eslint校验。husky是基于git-hooks来实现&#xff0c;在使用husky之前&#xff0c;我们先来研究一下git-hooks。 构建git-hooks测试项目 需要使用git-hooks就需…

网络安全概述(一)

目录 资产保护 资产的类型 资产损失类型 资产保护考虑因素 安全强度、安全代价和侵入可能性的关系 信息安全技术发展 单机系统的信息保密阶段 信息保障阶段 信息保障技术框架IATF PDRR模型 网络攻击类型 阻断攻击、截取攻击、篡改攻击、伪造攻击 被动攻击和主动攻…

【反哺开源】我们计划把“这个”商业化功能贡献给Apache DolphinScheduler

今年&#xff0c;白鲸开源计划将Gitops功能反馈贡献给Apache DolphinScheduler社区&#xff0c;这个功能主要解决了开发、生产环境的同步问题。 在没有这个功能之前&#xff0c;我们只能通过导入导出的方式&#xff0c;以 JSON 文件作为媒介将开发环境的内容同步到生产环境&…

WebSocket介绍与应用

介绍 WebSocket 是基于TCP的一种的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c;并进行双向数据传输。 HTTP协议和WebSocket协议对比&#xff1a; HTTP是短连接WebSocket是长连接…

K8S中POD的控制器

一、Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启策略无效&am…