练习小项目9:打字效果文字展示(多段文字循环+删除+光标闪烁)

article/2025/8/23 5:23:57

项目简介:

本文介绍如何用原生JavaScript实现一个简洁的打字效果,支持:

  • 多段文字循环播放

  • 打字完后暂停一会儿

  • 逐字删除,形成打字机动画感

  • 打字光标闪烁效果

项目适合用于首页欢迎语、提示语等动态文本展示,能提升页面交互体验。

✨核心思路:

  1. 文本数组:维护一个文字数组 texts,依次轮播显示。

  2. 打字与删除状态:用状态变量控制当前是“打字”还是“删除”。

  3. 计时器定时执行:用 setInterval 实现每隔固定时间打出一个字或删去一个字。

  4. 暂停控制:文字全部打完后暂停一段时间,再开始删除。

  5. 循环播放:删除完毕切换到下一条文字,循环播放。

  6. 光标闪烁:用CSS动画实现。

💡 技术点练习:

  • 用状态变量区分“打字”和“删除”

  • setInterval 控制时间节奏

  • 使用 slice 截取字符串部分显示

  • 通过setTimeout实现暂停效果

  • 利用CSS动画 @keyframes blinksteps(1) 实现文字后光标闪烁

页面结构(HTML 参考): 

<p id="typeText" class="typing-text"></p>

  实践代码如下: 

CSS:

.typing-text::after {content: '|';/* 光标字符 */animation: blink 0.8s steps(1) infinite;margin-left: 2px;
}@keyframes blink {0%,50% {opacity: 1;}50.01%,100% {opacity: 0;}
}

 JS:

const texts = ['欢迎来到前端学习之旅。', '每天进步一点点!', '每天一个小项目!'];
const typeText = document.getElementById('typeText')let textIndex = 0      // 当前显示的文本索引
let charIndex = 0     // 当前文本中已显示的字符索引
let mode = 'typing'   // 状态:typing(打字) 或 deleting(删除)
let timer = null
const pauseTime = 1000    // 打字完成后暂停时间
const intervalTime = 200  // 打字间隔const startTyping = () => {const currentText = texts[textIndex]timer = setInterval(() => {if (mode === 'typing') {typeText.textContent = currentText.slice(0, charIndex + 1)charIndex++if (charIndex === currentText.length) {mode = 'pause'clearInterval(timer)setTimeout(() => {mode = 'deleting'startTyping()}, pauseTime)}} else if (mode === 'deleting') {typeText.textContent = currentText.slice(0, charIndex - 1)charIndex--if (charIndex === 0) {textIndex = (textIndex + 1) % texts.lengthmode = 'typing'clearInterval(timer)startTyping()}}}, intervalTime);
}startTyping()

页面效果展示 : 

 


http://www.hkcw.cn/article/kPCWAuFVaj.shtml

相关文章

【从零开始超详细】Linux系统使用docker + docker-compose部署nacos以及SpringBoot+vue项目详细

Linux系统使用dockerdocker-compose部署nacos以及SpringBootvue项目详细文档 本文章Linux发行版为openEuler 22.03 (LTS-SP2), 多数命令与centos一致, 使用centos的小伙伴也可以参考 不知道自己的服务器是什么发行版的小伙伴可以执行如下命令查看: cat /etc/os-release执行结果…

利用Python制作环保志愿者招募海报

1. 文档概述 本研究文档详细论述了运用Python编程语言中的Pillow库&#xff08;PIL&#xff09;进行设计并制作一张专业环保志愿者招募海报的完整流程。该海报以“守护绿色家园”为主题&#xff0c;旨在激励社会公众积极参与森林保护的志愿活动。通过编程实现&#xff0c;海报中…

软考-系统架构设计师-第十五章 信息系统架构设计理论与实践

信息系统架构设计理论与实践 15.2 信息系统架构风格和分类15.3 信息系统常用的架构模型15.4 企业信息系统总体框架15.5 信息系统架构设计方法 15.2 信息系统架构风格和分类 信息系统架构风格 数据流体系结构风格&#xff1a;批处理、管道-过滤器调用/返回体系结构风格&#x…

德思特新闻 | 德思特与es:saar正式建立合作伙伴关系

德思特新闻 2025年5月9日&#xff0c;德思特科技有限公司&#xff08;以下简称“德思特”&#xff09;与德国嵌入式系统专家es:saar GmbH正式达成合作伙伴关系。此次合作旨在将 es:saar 的先进嵌入式开发与测试工具引入中国及亚太市场&#xff0c;助力本地客户提升产品开发效率…

【Simulink模型标准化开发】需求管理与基线测试--- Requirements ManagementSimulinkTest

前言&#xff1a;Simulink模型是嵌入于Matlab之中的一个模块化开发工具&#xff0c;它在嵌入式领域和应用层逻辑的搭建上享有声誉。并且&#xff0c;Simulink与C语言一样有着一套标准化的开发流程&#xff0c;因此它也具备安全性、可靠性、可移植性等优势。而在本篇文章中&…

前端 jQuery 简单实现一个网页格斗游戏示例

效果图 源代码&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>简易格斗游戏</t…

stm32 + ads1292心率检测报警设置上下限

这个项目是在做心率检测的时候一个小伙伴提出来的&#xff0c;今年五一的时候提出来的想法&#xff0c;五一假期的时候没时间&#xff0c;也没心情做这个&#xff0c;就把这个事情搁置了&#xff0c;在月中做工作计划的时候&#xff0c;就把这个小项目排进来了&#xff0c;五一…

git+svn+sourcetree客户端下载和安装教程

1.引言 本文带来git、svn、sourcetree的软件的下载链接和安装介绍。git、svn是文件版本控制工具&#xff0c;电脑安装后需要使用cmd命令来提交或拉取文件。非常麻烦&#xff0c;推荐使用sourcetree等工具来提交代码 sourcetree界面 压缩包内容&#xff0c;git、svn、svn汉化工…

华为湖南总部大楼刷新马栏山风景线:已经进入内部装修阶段

华为湖南总部大楼刷新马栏山风景线。5月29日,航拍镜头下的位于马栏山视频文创产业园的华为湖南总部大楼项目大楼十分引人注目,三栋楼体采用金色线条和玻璃元素,成为拔节生长的马栏山里一道亮丽的风景。从现场施工来看,该项目园林绿化已经完成,已经进入内部装修阶段。该项目…

小学生捡到手机后交给民警被送锦旗:失主准备了一面“哪吒锦旗”

小学生捡到手机后交给民警被送锦旗。近日,四川成都。7岁的小学生廖元祎在路边捡到一部手机,送到了派出所。巧合的是,就在廖元祎走进派出所不久,失主也来到派出所报失。看到手机物归原主,廖元祎开心地跳起来。为了给廖元祎一个表扬,失主准备了一面“哪吒锦旗”,和民警一起…

王力宏称为癌症研究者哥哥感到骄傲

王力宏称为癌症研究者哥哥感到骄傲。5月29日下午,知名歌手王力宏在社交媒体晒出哥哥王力德的演讲视频,以及和哥哥的合影。王力宏表示:“为我哥哥王力德博士感到骄傲!他在香港举行的ASGH亚洲医疗健康高峰会上发表演讲,思路清晰、充满远见。哥哥介绍了自己在希望之城实验室的…

风云二号 F 星:地球静止轨道上的气象先锋

风云二号卫星是我国第一代地球静止轨道气象卫星&#xff0c;从 1986 年国家正式批复风云二号气象卫星工程以来&#xff0c;经过多年的研制与发展。风云二号 F 星作为 03 批的首发星&#xff0c;其成功发射进一步提高了我国静止气象卫星的观测能力和技术水平&#xff0c;对于确保…

论文笔记:DreamDiffusion

【初中生也能看得懂的讲解】 想象一下&#xff0c;我们能不能直接用“脑子想”来画画&#xff1f;比如你想到一只猫&#xff0c;电脑就能画出一只猫。这听起来是不是很酷&#xff1f;科学家们一直在努力实现这个“意念画画”的梦想。 以前&#xff0c;科学家们可能会用一种叫…

输电线路的“智慧之眼”:全天候可视化监测如何赋能电网安全运维

在电力需求持续攀升、电网规模日益庞大的今天&#xff0c;输电线路的安全稳定运行面临着前所未有的挑战。线路跨越地形复杂多变&#xff0c;尤其是在偏远山区、铁路沿线及恶劣天气条件下&#xff0c;传统的人工巡检方式显得力不从心——效率低、风险高、覆盖有限。如何实现更智…

通过域名访问k8s-pod方案

针对一些特殊业务需要通过pod名称或域名直接访问pod内部服务。本文主要提供一种暴露pod域名到公司内网的方案。 01 技术方案 1、使用coredns基于etcd的域名解析插件 2、单独部署一套server&#xff0c;该server负责接收agent发来的域名记录请求&#xff0c;并将数据写到etcd。 …

【C++高级主题】命令空间(三):未命名的命名空间

目录 一、未命名的命名空间的基本概念 1.1 定义与特点 1.2 基本语法 1.3 访问方式 1.4 未命名的命名空间的作用 二、未命名的命名空间与静态声明的比较 2.1 静态声明的作用 2.2 未命名的命名空间的优势 2.3 示例代码比较 2.4. 未命名的命名空间的作用域和链接属性 三…

生成式人工智能:重构软件开发的范式革命与未来生态

引言 生成式人工智能&#xff08;GenAI&#xff09;正以颠覆性力量重塑软件开发的底层逻辑。从代码生成到业务逻辑设计&#xff0c;从数据分析到用户交互&#xff0c;GenAI通过其强大的推理能力与场景适应性&#xff0c;将传统开发流程的“复杂工程”转化为“敏捷实验”&#…

石宇奇称需要重视伤病:近期因治疗胃病导致腹部皮肤被烫出水泡

石宇奇称需要重视伤病。5月27日,在2025年新加坡羽毛球公开赛男单首轮比赛中,中国名将石宇奇以2比0战胜印尼选手郑加恒,顺利晋级十六强。赛后他透露,近期因治疗胃病导致腹部皮肤被烫出水泡。据了解,石宇奇长期受胃部不适和消化问题困扰,尤其2025年全英赛后症状加重,苏迪曼…

Attention Is All You Need论文阅读笔记

Attention is All You Need是如今机器学习研究者必读的论文&#xff0c;该文章提出的Transformer架构是如今很多机器学习项目的基础&#xff0c;说该文章极大推动了机器学习领域的研究也不为过。 但这么重要&#xff0c;也是必读的文章对初学者来说其实并不友好&#xff0c;很多…

持续12年的股权争夺战即将落幕 75%股权归属终见分晓

持续12年的股权争夺战即将落幕 75%股权归属终见分晓。一场持续12年的股权争夺战即将落幕。胡绪峰表示相信二审能公正判决,75%的股权归属问题即将揭晓。这场股权争夺战涉及陕西省公安厅厅长批示、最高人民法院判决,并影响了2000多户购房人的居住问题。2025年5月27日,王坚与陕…