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

CSS打字动画(keyframes typing)失效求助 附相关代码

解决文字打字动画不生效的问题

嘿,我帮你排查了下这段打字动画的代码,几个小细节导致它没正常工作,咱们一步步来修复:

问题核心原因

  1. 动画类未绑定到目标元素:你定义了.animated-text动画样式,但你的<a>标签没加上这个类,动画根本没被触发~
  2. 行内元素不支持宽度修改:<a>是行内元素,默认情况下width属性对它不起作用,动画里修改width自然没效果
  3. 动画参数与文本长度不匹配:steps(16)和width:16ch对应16个字符,但你的文本明显更长,会导致动画结束后文本显示不全

修复后的完整代码

HTML部分

给<a>标签加上animated-text类,让动画样式生效:

<li class="indent1">
  <a class="animated-text" href="#beliebte-steeldartscheiben" onclick="smoothScroll(document.getElementById('beliebte-steeldartscheiben'))">Die beliebtestens Steel-Dartscheiben...</a>
</li>

CSS部分

调整元素显示方式,同时匹配文本长度修改动画参数(这里假设文本约30个字符,你可以自己数实际字符数调整):

.animated-text {
  font-family: monospace;
  overflow: hidden;
  height: 1.1em;
  white-space: nowrap;
  /* 关键:把行内元素改成可设置宽度的行内块级 */
  display: inline-block;
  /* 初始宽度设为0,让动画从无到有 */
  width: 0;
  /* 可选:添加光标效果更逼真 */
  border-right: 2px solid black;
  /* 调整steps和width数值匹配实际字符数 */
  animation: typing 4s steps(30) forwards, blink 0.75s step-end infinite;
}

@keyframes typing {
  from { width: 0; }
  /* 用ch单位匹配字符数,1ch等于一个等宽字符的宽度 */
  to { width: 30ch; }
}

/* 可选:光标闪烁动画 */
@keyframes blink {
  from, to { border-color: transparent; }
  50% { border-color: black; }
}

额外小提示

  • 一定要数清楚目标文本的实际字符数,steps(N)和width:Nch里的N要完全一致,不然动画要么提前结束要么显示不全
  • 如果文本是动态生成的,没法提前数字符,可以用JavaScript获取文本长度后动态设置动画参数,静态场景下手动匹配就足够啦

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:46:07