Appearance
弹性文字效果
文字从底部弹出并带有弹性过冲效果,先放大超过目标尺寸再回弹缩小,最后稳定在最终状态。
实时预览
代码
css
.elastic-text {
display: flex;
gap: 4px;
}
.elastic-text span {
display: inline-block;
font-size: 52px;
font-weight: 900;
color: #f59e0b;
opacity: 0;
transform: translateY(80px) scale(0);
animation: elastic-bounce 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
text-shadow: 0 0 20px rgba(245, 158, 11, 0.4);
}
/* Stagger delays for each letter */
.elastic-text span:nth-child(1) { animation-delay: 0s; }
.elastic-text span:nth-child(2) { animation-delay: 0.08s; }
/* ... increment by 0.08s for each letter */
@keyframes elastic-bounce {
0% { opacity: 0; transform: translateY(80px) scale(0); }
50% { opacity: 1; transform: translateY(-15px) scale(1.2); }
70% { transform: translateY(5px) scale(0.95); }
85% { transform: translateY(-3px) scale(1.05); }
100% { opacity: 1; transform: translateY(0) scale(1); }
}html
<div class="elastic-text">
<span>B</span><span>O</span><span>U</span><span>N</span><span>C</span><span>E</span><span>!</span>
</div>纯 CSS 实现的弹性文字效果文字动画效果——通过渐变、阴影、滤镜和变换等 CSS 属性让文字产生视觉动效。所有文字内容保持可选中、可复制、对搜索引擎完全可见。
快速使用
- 复制 CSS 代码到你的样式文件中
- 在 HTML 中放入对应的文字结构(注意逐字效果需要每个字符包裹
<span>) - 根据你的文字内容调整
animation-delay和文字数量 - 修改颜色和字号以匹配你的品牌风格
使用场景
- 页面主标题:用渐变文字、霓虹发光或逐字弹跳效果吸引用户注意力
- 品牌名称/Logo:3D 文字或故障效果传递技术与设计感
- 营销活动页:彩虹文字、闪烁效果营造促销紧迫感
- 技术博客/文档:打字机效果展示代码片段或技术标语
常见问题
Q: 文字动画在哪些浏览器下兼容? A: 大部分效果所有现代浏览器都支持。需注意:background-clip: text 需 -webkit- 前缀;@property 仅 Chrome/Edge 支持。渐变文字和霓虹发光效果建议加降级方案。
Q: 动画文字会影响 SEO 吗? A: 不会。文字内容仍然在 HTML 中正常渲染,搜索引擎能完整抓取。CSS 动画只影响视觉呈现,不改变 DOM 结构和文本可访问性。
Q: 如何让逐字动画适配任意长度的文字? A: 用 JavaScript 动态给每个字符包裹 <span> 并设置 animation-delay: calc(var(--i) * 0.05s),或使用 CSS animation-delay 配合 nth-child 错位。
浏览器兼容性
| 浏览器 | 兼容性 |
|---|---|
| Chrome / Edge | ✅ 完全支持(含 @property) |
| Firefox | ✅ 基本支持(不含 @property) |
| Safari | ✅ 基本支持(需 -webkit-background-clip) |
| 移动端浏览器 | ✅ 完全支持 |
| IE 11 | ❌ 渐变文字等高级效果不支持 |
使用说明
| 属性 | 说明 |
|---|---|
cubic-bezier(0.175, 0.885, 0.32, 1.275) | 弹性缓动曲线,最后两个值 >1 产生过冲效果 |
scale(0) → scale(1.2) → scale(1) | 从0放大超过目标后回弹 |
translateY(80px) | 从下方升起的距离 |
animation-delay | 逐字母错开产生波浪入场效果 |
animation-fill-mode: forwards | 保持最终状态 |
提示: 调整 cubic-bezier 的最后两个参数控制过冲幅度,值越大弹跳越明显。增加 delay 间隔可以让波浪效果更舒缓。