
打字机效果是一种常见的网页动态文本展示方式,它能模拟文字逐个字符打出的过程,并常伴随一个闪烁的光标,为用户界面增添趣味性和专业感。本教程将引导您使用html、css和javascript,从零开始构建一个功能完善的打字机效果。
首先,我们需要一个HTML元素来承载将要动态显示的文本。为了确保JavaScript能精确地控制这个元素,建议为其分配一个唯一的ID。
<h1 id="typewriter-text"></h1>
在这个例子中,我们使用了一个h1标签,并为其指定了id="typewriter-text"。在实际应用中,您可以根据需要选择任何块级元素(如div、p等)。
打字机效果通常包含一个模拟文本输入光标的元素。这个光标可以通过CSS的边框和动画来实现。我们将在JavaScript中动态地将一个<span>元素插入到文本末尾作为光标。
span.typewriter-cursor {
border-right: .05em solid; /* 光标样式,一个细边框 */
animation: caret 1s steps(1) infinite; /* 定义闪烁动画 */
}
@keyframes caret {
50% {
border-color: transparent; /* 动画50%时边框透明,实现闪烁 */
}
}这里,我们定义了一个名为typewriter-cursor的span类,为其设置了右边框作为光标,并通过@keyframes caret动画使其每秒闪烁一次。steps(1)确保了动画是阶梯式的,即瞬间切换,而不是平滑过渡,更符合光标闪烁的视觉效果。
立即学习“Java免费学习笔记(深入)”;
JavaScript是实现打字机效果的核心。它负责控制文本的逐字显示、光标的插入、文本数组的循环以及动画的节奏。
document.addEventListener('DOMContentLoaded', function() {
// 要循环显示的文本数组
const dataText = [
"VISIBILITÀ.",
"NUOVI INGAGGI.",
"NUOVI FAN.",
"PIÙ VISIBILITÀ!",
"SUCCESSO!"
];
const targetElement = document.getElementById("typewriter-text"); // 获取目标H1元素
const typingSpeed = 90; // 每个字符打出的间隔时间(毫秒)
const textDisplayDelay = 2000; // 每个文本显示完毕后的停留时间(毫秒)
const loopRestartDelay = 20000; // 所有文本循环完毕后重新开始的延迟(毫秒)
/**
* 逐字显示文本的函数
* @param {string} text - 当前要显示的文本
* @param {number} charIndex - 当前正在显示的字符索引
* @param {function} fnCallback - 文本显示完毕后要执行的回调函数
*/
function typeWriter(text, charIndex, fnCallback) {
// 检查文本是否已全部显示
if (charIndex < text.length) {
// 将当前字符添加到目标元素,并插入光标span
targetElement.innerHTML = text.substring(0, charIndex + 1) + '<span class="typewriter-cursor" aria-hidden="true"></span>';
// 延迟后递归调用自身,显示下一个字符
setTimeout(function() {
typeWriter(text, charIndex + 1, fnCallback);
}, typingSpeed);
} else if (typeof fnCallback === 'function') {
// 文本显示完毕,延迟后调用回调函数
setTimeout(fnCallback, textDisplayDelay);
}
}
/**
* 启动文本动画循环的函数
* @param {number} textIndex - dataText数组中当前要显示的文本索引
*/
function StartTextAnimation(textIndex) {
// 如果当前文本索引超出数组范围,表示所有文本已显示完毕,等待一段时间后从头开始
if (typeof dataText[textIndex] === 'undefined') {
setTimeout(function() {
StartTextAnimation(0); // 从第一个文本重新开始
}, loopRestartDelay);
return; // 提前返回,避免后续执行
}
// 检查当前文本是否存在(防止空字符串或undefined)
if (textIndex < dataText.length) {
// 启动当前文本的打字机动画
typeWriter(dataText[textIndex], 0, function() {
// 当前文本动画完成后,启动下一个文本的动画
StartTextAnimation(textIndex + 1);
});
}
}
// 页面加载完成后,启动第一个文本的动画
StartTextAnimation(0);
});DOMContentLoaded事件监听器: 确保所有HTML内容加载完毕后再执行JavaScript代码,避免因元素未加载而导致的错误。
dataText数组: 存储所有需要循环显示的文本字符串。您可以根据需要修改或扩展这个数组。
targetElement: 使用document.getElementById("typewriter-text")精确地获取到要显示文本的HTML元素。这是解决原始问题中“计算所有h1”的关键,通过ID定位可以避免影响页面上其他同类型元素。
typeWriter(text, charIndex, fnCallback)函数:
StartTextAnimation(textIndex)函数:
通过上述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号