
打字机效果是一种常见的网页动态文本展示方式,它通过模拟打字机逐字输出文本的过程,为用户带来独特的视觉体验。这种效果常用于网站标题、口号或关键信息展示,能够有效吸引用户的注意力。本教程将引导您使用纯前端技术(html、css 和 javascript)构建一个功能完善、可定制的打字机效果。
首先,我们需要在 HTML 中定义一个元素来承载动态生成的文本。为了精确控制和避免影响页面上其他同类型元素,强烈建议为该元素指定一个唯一的 id。
<h1 id="typewriter-text"></h1>
在这个示例中,我们使用了一个 <h1> 标签,并为其指定了 id="typewriter-text"。JavaScript 将通过这个 id 来定位并操作该元素的内容。
打字机效果通常伴随着一个闪烁的光标。我们将利用一个 <span> 元素来模拟光标,并通过 CSS 动画使其周期性地闪烁。
/* 光标样式 */
#typewriter-text span {
border-right: .05em solid; /* 模拟光标 */
animation: caret 1s steps(1) infinite; /* 应用闪烁动画 */
}
/* 光标闪烁动画 */
@keyframes caret {
50% {
border-color: transparent; /* 在动画中点时隐藏光标 */
}
}JavaScript 是实现打字机效果的核心。它负责逐字输出文本、控制速度、切换不同的文本内容,并确保动画的流畅性。
立即学习“Java免费学习笔记(深入)”;
document.addEventListener('DOMContentLoaded', function() {
// 定义要进行打字动画的文本数组
var dataText = ["VISIBILITÀ.", "NUOVI INGAGGI.", "NUOVI FAN.", "PIÙ VISIBILITÀ!", "SUCCESSO!"];
// 获取承载文本的元素
var targetElement = document.getElementById('typewriter-text');
/**
* 逐字打印文本的函数
* @param {string} text 当前要打印的完整文本
* @param {number} i 当前打印到的字符索引
* @param {function} fnCallback 当文本打印完成后调用的回调函数
*/
function typeWriter(text, i, fnCallback) {
// 检查文本是否打印完成
if (i < text.length) {
// 更新目标元素的innerHTML,添加当前字符并保留光标
targetElement.innerHTML = text.substring(0, i + 1) + '<span aria-hidden="true"></span>';
// 设置延时,然后递归调用自身打印下一个字符
setTimeout(function() {
typeWriter(text, i + 1, fnCallback);
}, 90); // 90毫秒的打字速度
} else if (typeof fnCallback === 'function') {
// 文本打印完成,延时后调用回调函数
setTimeout(fnCallback, 2000); // 文本显示2秒后调用回调
}
}
/**
* 启动文本动画序列的函数
* @param {number} i 当前要显示的文本在dataText数组中的索引
*/
function StartTextAnimation(i) {
// 检查当前索引的文本是否存在
if (typeof dataText[i] === 'undefined') {
// 如果所有文本都已显示,则在较长时间后从头开始循环
setTimeout(function() {
StartTextAnimation(0);
}, 20000); // 所有文本循环完后等待20秒再重新开始
} else {
// 如果文本存在,则启动打字动画
typeWriter(dataText[i], 0, function() {
// 当前文本打字动画完成后,启动下一个文本的动画
StartTextAnimation(i + 1);
});
}
}
// 页面加载完成后,启动第一个文本的动画
StartTextAnimation(0);
});将上述 HTML、CSS 和 JavaScript 代码整合到您的项目中,即可实现打字机效果。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>打字机效果演示</title>
<style>
body {
font-family: 'Arial', sans-serif;
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background-color: #f0f0f0;
color: #333;
font-size: 2em; /* 示例字体大小 */
}
/* 确保h1在容器内居中 */
h1 {
white-space: nowrap; /* 防止文本换行 */
overflow: hidden; /* 隐藏超出容器的文本 */
margin: 0;
padding: 0;
}
/* 光标样式 */
#typewriter-text span {
border-right: .05em solid; /* 模拟光标 */
animation: caret 1s steps(1) infinite; /* 应用闪烁动画 */
}
/* 光标闪烁动画 */
@keyframes caret {
50% {
border-color: transparent; /* 在动画中点时隐藏光标 */
}
}
</style>
</head>
<body>
<h1 id="typewriter-text"></h1>
<script>
document.addEventListener('DOMContentLoaded', function() {
// 定义要进行打字动画的文本数组
var dataText = ["VISIBILITÀ.", "NUOVI INGAGGI.", "NUOVI FAN.", "PIÙ VISIBILITÀ!", "SUCCESSO!"];
// 获取承载文本的元素
var targetElement = document.getElementById('typewriter-text');
/**
* 逐字打印文本的函数
* @param {string} text 当前要打印的完整文本
* @param {number} i 当前打印到的字符索引
* @param {function} fnCallback 当文本打印完成后调用的回调函数
*/
function typeWriter(text, i, fnCallback) {
// 检查文本是否打印完成
if (i < text.length) {
// 更新目标元素的innerHTML,添加当前字符并保留光标
targetElement.innerHTML = text.substring(0, i + 1) + '<span aria-hidden="true"></span>';
// 设置延时,然后递归调用自身打印下一个字符
setTimeout(function() {
typeWriter(text, i + 1, fnCallback);
}, 90); // 90毫秒的打字速度
} else if (typeof fnCallback === 'function') {
// 文本打印完成,延时后调用回调函数
setTimeout(fnCallback, 2000); // 文本显示2秒后调用回调
}
}
/**
* 启动文本动画序列的函数
* @param {number} i 当前要显示的文本在dataText数组中的索引
*/
function StartTextAnimation(i) {
// 检查当前索引的文本是否存在
if (typeof dataText[i] === 'undefined') {
// 如果所有文本都已显示,则在较长时间后从头开始循环
setTimeout(function() {
StartTextAnimation(0);
}, 20000); // 所有文本循环完后等待20秒再重新开始
} else {
// 如果文本存在,则启动打字动画
typeWriter(dataText[i], 0, function() {
// 当前文本打字动画完成后,启动下一个文本的动画
StartTextAnimation(i + 1);
});
}
}
// 页面加载完成后,启动第一个文本的动画
StartTextAnimation(0);
});
</script>
</body>
</html>通过本教程,您已经掌握了如何利用 HTML 定义结构、CSS 实现光标动画以及 JavaScript 驱动文本逐字显示和循环的关键技术。这种打字机效果不仅能提升网站的视觉吸引力,还能有效传达信息,为用户带来更具互动性的浏览体验。您可以根据自己的需求调整代码中的参数,创建出独一无二的动态文本效果。
以上就是使用 HTML、CSS 和 JavaScript 创建动态打字机效果教程的详细内容,更多请关注php中文网其它相关文章!
HTML怎么学习?HTML怎么入门?HTML在哪学?HTML怎么学才快?不用担心,这里为大家提供了HTML速学教程(入门课程),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号