打字机效果
创建一个打字机效果的动画。
- 定义两个动画,
typing
用于动画化字符,blink
用于动画化光标。 - 使用
::after
伪元素将光标添加到容器元素中。 - 使用 JavaScript 设置内部元素的文本,并设置包含字符计数的
--characters
变量。该变量用于动画化文本。 - 使用
white-space: nowrap
和overflow: hidden
使内容在必要时不可见。
<div class="typewriter-effect">
<div class="text" id="typewriter-text"></div>
</div>
.typewriter-effect {
display: flex;
justify-content: center;
font-family: monospace;
}
.typewriter-effect > .text {
max-width: 0;
animation: typing 3s steps(var(--characters)) infinite;
white-space: nowrap;
overflow: hidden;
}
.typewriter-effect::after {
content: " |";
animation: blink 1s infinite;
animation-timing-function: step-end;
}
@keyframes typing {
75%,
100% {
max-width: calc(var(--characters) * 1ch);
}
}
@keyframes blink {
0%,
75%,
100% {
opacity: 1;
}
25% {
opacity: 0;
}
}
const typeWriter = document.getElementById('typewriter-text');
const text = 'Lorem ipsum dolor sit amet.';
typeWriter.innerHTML = text;
typeWriter.style.setProperty('--characters', text.length);
typeWriter.innerHTML = text; typeWriter.style.setProperty('--characters', text.length); ```