You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网站多行Typewriter动画问题:动画启动前文本提前显示

修复多行打字机动画初始文本显示异常问题

你的问题根源是初始样式设置不完整,导致第二行文本在动画开始前就已显示,后续又因动画重置宽度出现“消失再重新打字”的异常。以下是具体修复方案:

修正后的CSS代码

/* 将此代码复制粘贴到你的CSS编辑器中 */
.typewriter p {
  white-space: nowrap;
  overflow: hidden;
  width: 0; /* 初始宽度设为0,让文本完全隐藏 */
  margin: 0.5em 0; /* 可选:增加行间距,优化视觉效果 */
}

.typewriter p:nth-child(1) {
  /* 根据文本长度调整目标宽度,避免截断 */
  animation: type 2s steps(40, end);
  animation-delay: 1s;
  animation-fill-mode: forwards; /* 动画结束后保持最终状态 */
}

.typewriter p:nth-child(2) {
  opacity: 0; /* 初始透明,配合动画延迟 */
  animation: type2 2s steps(40, end);
  animation-delay: 3s;
  animation-fill-mode: forwards;
}

/* 第一行打字动画:从宽度0过渡到目标宽度 */
@keyframes type {
  0% {
    width: 0;
  }
  100% {
    width: 16em; /* 设置第一行文本的目标宽度 */
  }
}

@-webkit-keyframes type {
  0% {
    width: 0;
  }
  100% {
    width: 16em;
  }
}

/* 第二行打字动画:先显示,再逐步展开宽度 */
@keyframes type2 {
  0% {
    width: 0;
    opacity: 0;
  }
  1% {
    opacity: 1; /* 动画开始瞬间显示文本 */
  }
  100% {
    opacity: 1;
    width: 22em; /* 设置第二行文本的目标宽度 */
  }
}

@-webkit-keyframes type2 {
  0% {
    width: 0;
    opacity: 0;
  }
  1% {
    opacity: 1;
  }
  100% {
    opacity: 1;
    width: 22em;
  }
}

对应的HTML代码

<div class="typewriter">
  <p>Words have power.</p>
  <p>We leverage that power for good.</p>
</div>

关键修改说明

  • 初始宽度设为0:所有.typewriter p默认宽度为0,结合overflow:hidden,文本会被完全隐藏,不会提前出现在页面上。
  • 统一动画逻辑:第一行动画只负责宽度从0到目标值的过渡;第二行动画先在开始瞬间将opacity设为1,再逐步展开宽度,避免“消失再出现”的异常。
  • 修正webkit动画错误:原来的@-webkit-keyframes type2结尾opacity设为0,导致动画结束后第二行消失,现在改为1,保持文本显示。
  • 调整目标宽度:第二行文本更长,把目标宽度改为22em,避免文本被截断(可根据实际内容调整)。

内容的提问来源于stack exchange,提问作者Kevin Rosenquist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 20:05:39