day47-Testimonial Box Switcher(推荐箱切换器-动态进度条自动更新卡片信息)

本文主要是介绍day47-Testimonial Box Switcher(推荐箱切换器-动态进度条自动更新卡片信息),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

50 天学习 50 个项目 - HTMLCSS and JavaScript

day47-Testimonial Box Switcher(推荐箱切换器-动态进度条自动更新卡片信息)

效果

在这里插入图片描述

在这里插入图片描述

index.html

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.14.0/css/all.min.css"integrity="sha512-1PKOgIY59xJ8Co8+NE6FZ+LOAZKjy+KY8iq0G4B3CyeY6wYHN3yt9PW0XpSriVlkMXe40PTKnXrLnZ9+fkDaog=="crossorigin="anonymous" /><link rel="stylesheet" href="style.css" /><title>Testimonial Box</title>
</head><body><!-- 推荐箱容器 --><div class="testimonial-container"><!-- 进度条 --><div class="progress-bar"></div><!-- 字体图标 --><div class="fas fa-quote-right fa-quote"></div><div class="fas fa-quote-left fa-quote"></div><!-- 推荐信  --><p class="testimonial">我曾与数百名HTML/CSS开发人员合作过,我不得不说这个家伙是最优秀的。这家伙是个了不起的开发者。他强调良好、干净的代码,并注重细节。我喜欢那些尊重经过深思熟虑的设计的每一个方面,并尽最大努力将其写入代码的开发人员。他超越并将艺术转化为像素-每次都没有故障。</p><!-- 人物 --><div class="user"><img src="https://randomuser.me/api/portraits/women/46.jpg" alt="user" class="user-image" /><!-- 人物细节 --><div class="user-details"><h4 class="username">Miyah麦尔斯</h4><p class="role">营销</p></div></div></div><script src="script.js"></script>
</body></html>

style.css

@import url('https://fonts.googleapis.com/css?family=Montserrat');* {box-sizing: border-box;
}body {background: url('https://source.unsplash.com/random') no-repeat center/cover;font-family: 'Montserrat', sans-serif;/* 子元素竖直居中 */display: flex;flex-direction: column;align-items: center;justify-content: center;height: 100vh;overflow: hidden;margin: 0;padding: 10px;
}/* 推荐箱 */
.testimonial-container {background-color: #476ce4;color: #fff;border-radius: 15px;margin: 20px auto;padding: 50px 80px;max-width: 768px;position: relative;
}/* 字体图标 “” */
.fa-quote {color: rgba(255, 255, 255, 0.3);font-size: 28px;position: absolute;top: 70px;
}/* “ */
.fa-quote-right {left: 40px;
}/* ” */
.fa-quote-left {right: 40px;
}/* 推荐信 */
.testimonial {line-height: 28px;text-align: justify;
}/* 人物 */
.user {display: flex;align-items: center;justify-content: center;
}/* 头像 */
.user .user-image {border-radius: 50%;height: 75px;width: 75px;object-fit: cover;
}/* 细节 */
.user .user-details {margin-left: 10px;
}/* 姓名 */
.user .username {margin: 0;
}/* 角色 */
.user .role {font-weight: normal;margin: 10px 0;
}/* 进度条 */
.progress-bar {background-color: #fff;height: 4px;width: 100%;/* 动画 infinite 反复执行*/animation: grow 10s linear infinite;/* 转换起点为左边 */transform-origin: left;
}@keyframes grow {0% {/* 将元素沿着X轴缩放为0倍,也就是将其压扁成一条直线,宽度为0,但高度不变。实际上,这会使元素在水平方向上消失,不再可见。 */transform: scaleX(0);}
}/* 响应式布局 */
@media (max-width: 768px) {.testimonial-container {padding: 20px 30px;}.fa-quote {display: none;}
}

script.js


// 重点 flex position transform: scaleX(0); animation: grow 10s linear infinite; 解构
// 1.获取元素节点
const testimonialsContainer = document.querySelector('.testimonials-container')//推荐箱容器
const testimonial = document.querySelector('.testimonial')//推荐信
const userImage = document.querySelector('.user-image')//头像
const username = document.querySelector('.username')//姓名
const role = document.querySelector('.role')//角色
// 定义数组存储所有推荐信
const testimonials = [{name: 'Miyah麦尔斯',position: '营销',photo:'https://images.unsplash.com/photo-1494790108377-be9c29b29330?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=200&fit=max&s=707b9c33066bf8808c934c8ab394dff6',text:"我曾与数百名HTML/CSS开发人员合作过,我不得不说这个家伙是最优秀的。这家伙是个了不起的开发者。他强调良好、干净的代码,并注重细节。我喜欢那些尊重经过深思熟虑的设计的每一个方面,并尽最大努力将其写入代码的开发人员。他超越并将艺术转化为像素-每次都没有故障。",},{name: '六月查',position: '软件工程师',photo: 'https://randomuser.me/api/portraits/women/44.jpg',text:'这个家伙是一个了不起的前端开发人员,他交付的任务正是我们需要的,帮你自己一个忙,雇佣他,你不会对交付的工作感到失望。他会加倍努力确保你对你的项目感到满意。我一定会再和他合作!',},{name: '伊达·尼斯卡宁',position: '数据输入',photo: 'https://randomuser.me/api/portraits/women/68.jpg',text:"这家伙工作很努力。与他的沟通也很好,他一直都很有反应,这在许多自由职业者身上是不容易找到的。我们一定和他再来一次。",},{name: '蕾妮·西姆斯',position: '接待员',photo: 'https://randomuser.me/api/portraits/women/65.jpg',text:"这家伙竭尽所能把工作做好。这是我第二次雇他,以后还会再雇他。",},{name: '乔纳森',position: '平面设计师',photo: 'https://randomuser.me/api/portraits/men/43.jpg',text:"我担心由于截止日期太紧,这个项目无法完成。但是这个家伙证明了我错了,他不仅交出了一份出色的工作,而且还设法在截止日期前一天交出了工作。当我要求修改时,他在几分钟内就修改好了。我期待着再次与他合作,我完全推荐他。再次感谢!",},{name: '萨莎何',position: '会计',photo:'https://images.pexels.com/photos/415829/pexels-photo-415829.jpeg?h=350&auto=compress&cs=tinysrgb',text:'这家伙是一个顶尖的设计师和前端开发人员。他善于沟通,工作速度快,工作质量高。我们很幸运能和他一起工作!',},{name: '杰克翰',position: '导演',photo: 'https://randomuser.me/api/portraits/men/97.jpg',text:'这家伙是一个年轻而有才华的IT专业人士,积极主动,负责任,有很强的职业道德。他非常擅长PSD2HTML转换和HTML/CSS技术。他学东西很快,渴望学习新技术。他很专注,有很好的动力来完成预定的日期和出色的结果。',},
]
// 当前展示的数据的索引
let idx = 1
// 更新展示的推荐箱
function updateTestimonial() {const { name, position, photo, text } = testimonials[idx]testimonial.innerHTML = textuserImage.src = photousername.innerHTML = namerole.innerHTML = position// +1 即下一个,方便下次更新时渲染idx++//如果索引大于最大索引,则渲染第一个if (idx > testimonials.length - 1) {idx = 0}
}
// 开启间歇器 10000为进度条动画的时间
setInterval(updateTestimonial, 10000)

这篇关于day47-Testimonial Box Switcher(推荐箱切换器-动态进度条自动更新卡片信息)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827661

相关文章

C#如何动态创建Label,及动态label事件

《C#如何动态创建Label,及动态label事件》:本文主要介绍C#如何动态创建Label,及动态label事件,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#如何动态创建Label,及动态label事件第一点:switch中的生成我们的label事件接着,

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

SpringCloud动态配置注解@RefreshScope与@Component的深度解析

《SpringCloud动态配置注解@RefreshScope与@Component的深度解析》在现代微服务架构中,动态配置管理是一个关键需求,本文将为大家介绍SpringCloud中相关的注解@Re... 目录引言1. @RefreshScope 的作用与原理1.1 什么是 @RefreshScope1.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

一文详解SQL Server如何跟踪自动统计信息更新

《一文详解SQLServer如何跟踪自动统计信息更新》SQLServer数据库中,我们都清楚统计信息对于优化器来说非常重要,所以本文就来和大家简单聊一聊SQLServer如何跟踪自动统计信息更新吧... SQL Server数据库中,我们都清楚统计信息对于优化器来说非常重要。一般情况下,我们会开启"自动更新

查看Oracle数据库中UNDO表空间的使用情况(最新推荐)

《查看Oracle数据库中UNDO表空间的使用情况(最新推荐)》Oracle数据库中查看UNDO表空间使用情况的4种方法:DBA_TABLESPACES和DBA_DATA_FILES提供基本信息,V$... 目录1. 通过 DBjavascriptA_TABLESPACES 和 DBA_DATA_FILES

最新Spring Security实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)

《最新SpringSecurity实战教程之表单登录定制到处理逻辑的深度改造(最新推荐)》本章节介绍了如何通过SpringSecurity实现从配置自定义登录页面、表单登录处理逻辑的配置,并简单模拟... 目录前言改造准备开始登录页改造自定义用户名密码登陆成功失败跳转问题自定义登出前后端分离适配方案结语前言

OpenManus本地部署实战亲测有效完全免费(最新推荐)

《OpenManus本地部署实战亲测有效完全免费(最新推荐)》文章介绍了如何在本地部署OpenManus大语言模型,包括环境搭建、LLM编程接口配置和测试步骤,本文给大家讲解的非常详细,感兴趣的朋友一... 目录1.概况2.环境搭建2.1安装miniconda或者anaconda2.2 LLM编程接口配置2

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

mybatis-plus 实现查询表名动态修改的示例代码

《mybatis-plus实现查询表名动态修改的示例代码》通过MyBatis-Plus实现表名的动态替换,根据配置或入参选择不同的表,本文主要介绍了mybatis-plus实现查询表名动态修改的示... 目录实现数据库初始化依赖包配置读取类设置 myBATis-plus 插件测试通过 mybatis-plu