3D 立体文字特效(凸起/凹陷/悬停弹出 CSS 源码)
3D 立体文字三种形态源码:多层阴影堆叠凸起、内阴影凹陷压印、透视悬停弹出,纯 CSS 实现,适合海报标题与活动主视觉。
效果演示(真实可交互)
下方依次是立体凸起字、凹陷压印字、以及悬停会透视倾斜弹起的 3D 字。第三行请把鼠标放上去体验弹出效果。
立体凸起
凹陷压印
悬停弹出 3D
完整代码
HTML 结构:
<p class="td td-extrude">立体凸起</p>
<p class="td td-press">凹陷压印</p>
<p class="td td-pop">悬停弹出 3D</p>
核心 CSS:凸起字的关键是每下一层阴影都向右下偏移一点,堆出厚度:
/* ① 立体凸起:6 层阴影逐级堆叠 */
.td-extrude {
color: #6c8cff;
text-shadow:
1px 1px 0 #5a7bf0,
2px 2px 0 #4d6fe0,
3px 3px 0 #4163d0,
4px 4px 0 #3557c0,
5px 5px 0 #294bb0,
6px 6px 0 #1d3fa0, /* 层数越多厚度越明显 */
8px 10px 18px rgba(0, 0, 0, .45); /* 底部投影 */
}
/* ② 凹陷压印:下方高光 + 上方暗影 */
.td-press {
color: #3a4256;
text-shadow:
0 1px 0 #f2f5ff, /* 底部高光 */
0 -1px 2px rgba(0, 0, 0, .6); /* 顶部暗影 */
}
/* ③ 悬停弹出:透视倾斜 + 阴影加深 */
.td-pop {
transform: perspective(600px) rotateX(0deg);
transition: transform .3s ease, text-shadow .3s ease;
text-shadow: 2px 2px 0 #4d6fe0, 4px 4px 0 #3557c0, 8px 8px 20px rgba(0, 0, 0, .4);
}
.td-pop:hover {
transform: perspective(600px) rotateX(18deg) translateY(-4px) scale(1.05);
text-shadow: 2px 2px 0 #4d6fe0, 5px 5px 0 #3557c0, 12px 14px 26px rgba(0, 0, 0, .5);
}
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
| 堆叠层数 | 6 层 | 决定立体厚度,层越多越厚重 |
| 每层偏移 | 1px | 相邻两层的错位距离 |
| 凹陷高光 | 0 1px 0 #f2f5ff | 底部亮边模拟受光 |
| 透视距离 | 600px | 越小透视变形越强 |
| 悬停倾斜 | 18deg | 弹出时的 rotateX 角度 |
兼容性与性能
- 纯 CSS 实现,text-shadow 与 transform 均为现代浏览器长期支持的特性
- 多层阴影对合成层有一定压力,大字标题建议控制在 8 层以内;静态展示无动画时开销可忽略
perspective()直接写在 transform 中,比父容器 perspective 更独立,适合单元素使用- 凹陷压印效果对背景亮度敏感,浅色背景上需要调暗文字色才能看出凹感
常见问题
Q: 想换成别的颜色? 改 color 与每层阴影色即可,规律是每往下堆一层颜色加深一档(如 #6c8cff 到 #1d3fa0)。
Q: 立体字能加动画吗? 可以,比如让 rotateX 缓慢摆动模拟呼吸感;悬停弹出形态已经演示了 transform 动画的用法。
Q: 汉字和英文效果一样吗? 基本一致,笔画复杂的汉字在层数多时更显厚重,建议中文用 4-6 层即可。
Q: 可以商用吗? 可以,粤喵自研原创组件,免费商用无需署名。
许可与来源
- 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
- 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
- 首次发布:2026-09-01 · 最近更新:2026-09-01
- 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
- 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理
常见问题
这个组件可以商用吗?
可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。
浏览器兼容性如何?
支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。
怎么修改动画参数?
直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。