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

CSS动画无法作用于HTML单个文本字符,请求排查解决

问题排查与修复

你的代码没效果的核心原因是:<span> 是行内元素,CSS的 transform: rotate() 对行内元素不生效——行内元素没有独立的布局盒模型,无法执行旋转这类几何变换。

修复方案

给 .end 类添加 display: inline-block(或者 inline-flex),让每个字符所在的span变成行内块级元素,这样就能支持transform变换了。同时可以加上 transform-origin 调整旋转原点,让摆动效果更贴近字符自然摆动的感觉。

修改后的完整代码

.ending-credit {
  padding-top: 200px;
  text-align: center;
}

.end {
  display: inline-block; /* 关键:让span具备可变换的盒模型 */
  transform-origin: bottom center; /* 可选:将旋转原点设为字符底部中心,摆动更自然 */
  animation-duration: 4s;
  animation-name: sway;
  animation-iteration-count: infinite;
}

@keyframes sway {
  0%,
  100% {
    transform: rotate(-20deg);
  }
  50% {
    transform: rotate(20deg);
  }
}
<p class="ending-credit">
  <span class="end">I</span>
  <span class="end">w</span>
  <span class="end">i</span>
  <span class="end">l</span>
  <span class="end">l</span>
  <span class="end">r</span>
  <span class="end">e</span>
  <span class="end">t</span>
  <span class="end">u</span>
  <span class="end">r</span>
  <span class="end">n</span> ...
</p>

额外优化(可选)

如果想让字符摆动更有节奏感,可给每个span设置不同的动画延迟,让摆动错开:

.end:nth-child(2) { animation-delay: 0.2s; }
.end:nth-child(3) { animation-delay: 0.4s; }
.end:nth-child(4) { animation-delay: 0.6s; }
/* 依次给后续字符增加延迟即可 */

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:01:15