css实现文字依次出现的核心是为每个span设置递增的animation-delay并配合统一@keyframes动画,需加forwards保持终态,注意时长与延迟协调及无障碍适配。

用 CSS 实现 banner 中文字“依次出现”,核心思路是:给每个文字(或词)单独设置 animation-delay,配合同一个 @keyframes 动画控制透明度/位移等入场效果。关键在于“延迟错开”,而非逐个写不同动画。
1. 结构准备:每个字独立包裹
避免用一整段文字直接动画(无法分字控制),推荐将每个字或关键词用 span 包裹:
迎
光
临
2. 定义统一入场动画
用 @keyframes 定义一个简洁的淡入+微上浮效果(也可加 scale 或 translateX):
@keyframes fadeInUp {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
3. 批量设置 delay 实现顺序触发
给每个 span 设置递增的 animation-delay,例如每字间隔 0.2s:
立即学习“前端免费学习笔记(深入)”;
.banner span {
animation: fadeInUp 0.5s ease-out forwards;
}
.banner span:nth-child(1) { animation-delay: 0s; }
.banner span:nth-child(2) { animation-delay: 0.2s; }
.banner span:nth-child(3) { animation-delay: 0.4s; }
.banner span:nth-child(4) { animation-delay: 0.6s; }
✅ 小技巧:若字数多,可用 CSS 自定义属性 + calc 简化(现代浏览器支持):
.banner span {
–i: attr(data-index); /* html 中加 data-index=”0″ “1” … */
animation-delay: calc(var(–i) * 0.2s);
}
4. 注意细节提升体验
- 务必加
forwards,让动画结束后保持最终状态(否则会闪回透明) - 动画时长(如
0.5s)和延迟步长(如0.2s)需协调,避免重叠过密或空档太长 - 若 banner 是响应式布局,可配合
@media调小 delay 或禁用动画保性能 - 对屏幕阅读器友好:可加
aria-hidden="true"或用prefers-reduced-motion关闭动画
基本上就这些——不复杂但容易忽略 delay 和 forwards 的搭配。实际项目中,用 js 动态生成 style 或配合 CSS-in-JS 也能批量注入 delay,但纯 CSS 方案更轻量、易维护。