打字机效果

创建一个打字机效果的动画。

  • 定义两个动画,typing 用于动画化字符,blink 用于动画化光标。
  • 使用 ::after 伪元素将光标添加到容器元素中。
  • 使用 JavaScript 设置内部元素的文本,并设置包含字符计数的 --characters 变量。该变量用于动画化文本。
  • 使用 white-space: nowrapoverflow: 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); ```