使用JavaScript定时器逐字添加字符,结合css光标动画实现打字机效果。示例中通过setTimeout每100ms向页面元素追加一个字符,直至完整显示“Hello!欢迎来到我的网页。”,并支持扩展多行文本、调节速度与删除重打功能。

要在html中实现打字机效果,也就是让文字像打字一样逐字显示,可以通过JavaScript控制文本的逐个输出。这种动画常用于欢迎语、标题展示或引导性内容,增强页面的交互感。
基本原理
打字机动画的核心思路是:
- 定义一段要显示的完整文本
- 通过JavaScript定时器(如 setTimeout 或 setInterval)逐个添加字符到页面元素中
- 每过一定时间(例如100毫秒)显示下一个字符,直到全部显示完毕
实现步骤
下面是一个简单可运行的示例:
 <!DOCTYPE html> <html lang="zh"> <head>   <meta charset="UTF-8" />   <title>打字机效果</title>   <style>     #typewriter {       font-size: 18px;       font-family: monospace;       white-space: nowrap;       border-right: 2px solid #000;       width: 0;       overflow: hidden;       animation: blink 0.8s step-end infinite;     }     @keyframes blink {       from, to { border-color: transparent; }       50% { border-color: #000; }     }   </style> </head> <body>   <div id="typewriter"></div>    <script>     const text = "Hello!欢迎来到我的网页。";     const typewriter = document.getElementById("typewriter");     let index = 0;      function type() {       if (index < text.length) {         typewriter.textContent += text.charAt(index);         index++;         setTimeout(type, 100); // 每100ms打一个字       }     }      // 页面加载完成后开始打字     window.onload = type;   </script> </body> </html> 
增强功能建议
你可以根据需要扩展功能:
立即学习“Java免费学习笔记(深入)”;
- 支持多行文本:用数组存储多句话,前一句打完再打下一句
- 控制光标闪烁:使用css动画实现更自然的光标效果(如上例中的 @keyframes blink)
- 可配置速度:把打字间隔设为变量,方便调整快慢
- 支持删除重打:模拟真实打字机,打错后退格重写,可用反向定时器清除字符
注意事项
实际使用时注意以下几点:
基本上就这些。这个效果不复杂但容易忽略细节,比如光标样式和字符延迟的协调。只要掌握好定时器和dom操作,就能轻松实现生动的打字机动画。


