这篇文章主要讲解了“JS如何实现自动打字机动效”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JS如何实现自动打字机动效”吧!
首先这个需求的目的是实现自动打字机效果,意思就是文字会一个一个出来,而且文字的最终显示提前已经固定,或者是已经获取完成了;
然后就需要每次将文字字符串拆开,每次比上一次多显示一个文字,并且清除掉上一次的显示;每次累加要显示的文字,必定有个累加的过程,这里就需要用到递归显示,而递归的重要点在于阈值停止,所以累加的索引和字符串的长度应该有一个判断,以停止继续执行递归。
本功能并没有复杂的样式显示,所以布局只是用了一个div元素,而为了还原需求,将背景设置为黑底,文字设置为白色,更有一种自动打字机的科技感,代码如下:
<div class="word"></div> <style> body { background: #000; } .word { margin: 100px; width: 500px; height: 30px; padding: 2px 10px; font-size: 26px; color: #FFF; font-weight: bold; } </style>
需要预定义一个最终显示的字符串; 需要定义获取dom的变量;需要定义一个索引变量,用于不但累加计算;需要定义定时打字的变量,用于setTimeout的方法定义,以实现真实打字的场景特效;需要提前定义一个获取字符串长度的变量;需要定义每个阶段显示的字符串的变量;这里共定义了6个变量,代码如下:
var wordStr = '2023年,喜迎新春,玉兔吉祥'; var wordDom = document.querySelector('.word'); var num = 0; var wordTimeout = null; var wLength = wordStr.length; var showWord = '';
既然是模拟打字效果,咱们定义的字符串是“2023年,喜迎新春,玉兔吉祥”,所以显示过程肯定是:第一次显示“2”,第二次显示“20”,第三次显示“202”,以此类推,通过上一步预定义的num值累加,最终将字符串全部显示出来,所以第一步代码应该是:
showWord += wordStr.charAt(num); wordDom.innerHTML = showWord;
此时num值为0,通过字符串的charAt获取固定索引的字符,也就是“2” ,但既然要模拟真实打字效果,打字都是需要时间的,所以,我们加上setTimeout函数,有个演示打字效果:
wordTimeout = setTimeout(() => { showWord += wordStr.charAt(num); wordDom.innerHTML = showWord; }, 300)
而这只是第1个文字,想要实现不断累加,就得有个回调,用于源源不断的累加,计算,渲染显示:
function autoWord() { wordTimeout = setTimeout(() => { showWord += wordStr.charAt(num); wordDom.innerHTML = showWord; num++; autoWord(); // 递归调用 }, 300) } autoWord();
而递归的重点在于源源不断,阈值而停
if (num < wLength) { autoWord(); } else { window.clearTimeout(wordTimeout); wordTimeout = null; }
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>自动打字机</title> <style> * { margin: 0; padding: 0; } body { background: #000; } .word { margin: 100px; width: 500px; height: 30px; padding: 2px 10px; font-size: 26px; color: #FFF; font-weight: bold; } </style> </head> <body> <div class="word"></div> <script> var wordStr = '2023年,喜迎新春,玉兔吉祥'; var wordDom = document.querySelector('.word'); var num = 0; var wordTimeout = null; var wLength = wordStr.length; var showWord = ''; function autoWord() { wordTimeout = setTimeout(() => { showWord += wordStr.charAt(num); wordDom.innerHTML = showWord; num++; if (num < wLength) { autoWord(); } else { window.clearTimeout(wordTimeout); wordTimeout = null; } }, 300) } autoWord(); </script> </body>
感谢各位的阅读,以上就是“JS如何实现自动打字机动效”的内容了,经过本文的学习后,相信大家对JS如何实现自动打字机动效这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。