用text-shadow模拟凸版效果的关键是匹配光源方向与背景明度:深底浅字用0 -1px 0 rgba(0,0,0,.6),浅底深字用0 1px 0 rgba(255,255,255,.7),阴影模糊值须为0以保边缘锐利,最多两层(主阴影+微反光)即可。

直接说结论:用 text-shadow 模拟光源方向 + 明暗对比,就能做出可信的凸版效果;关键不是加多少层阴影,而是阴影位置和颜色是否匹配背景明度。
凸版效果为什么总显得“假”?
常见错误是把 text-shadow 当成装饰属性乱堆叠,比如在浅底深字上也加 0 -1px 1px black —— 这实际模拟的是光源在下方,违背人眼默认的“光从上方来”的视觉习惯,立刻失真。
- 凸版本质是“文字略高于背景”,所以下方该有暗影(浅底)或上方该有暗影(深底)
- 阴影模糊值(第三个参数)必须极小甚至为
0,否则边缘发虚,失去雕刻感 - 深色背景配浅字时,用
0 -1px 0 black比0 -1px 1px black更锐利、更像压印
深色背景上做凸版:用负垂直偏移 + 无模糊
这是最典型也最容易出效果的场景。假设背景是 #2c3e50,文字是 #ecf0f1,那么:
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
.letterpress {
background: #2c3e50;
color: #ecf0f1;
text-shadow: 0 -1px 0 rgba(0,0,0,.6);
}
-
0 -1px表示阴影向上偏移 1px,对应“文字凸起后顶部被遮挡”的物理逻辑 - 第三个参数设为
0,避免柔化破坏边缘硬度;若需轻微过渡,可改用0 -1px .05em rgba(0,0,0,.4) - 不要用纯黑
black,改用带透明度的rgba(0,0,0,.6),更贴合真实油墨压痕的灰度
浅色背景上做凸版:改用正向偏移 + 浅色阴影
背景越浅,文字越深,凸起感越依赖“底部微亮边”。例如背景 #f8f9fa、文字 #343a40:
.letterpress-light {
background: #f8f9fa;
color: #343a40;
text-shadow: 0 1px 0 rgba(255,255,255,.7);
}
-
0 1px向下偏移,模拟凸起物投在下方的反光面 - 阴影颜色必须是浅色(白或浅灰),且透明度不能太低,否则像脏污而非高光
- 如果文字本身很细(如
font-weight: 300),建议把偏移值缩到.5px或用.03em,避免边缘断裂
多层阴影不是越多越好,两层刚好够用
网上常见写法如 text-shadow: 0 -1px 0 #000, 0 -2px 0 #333,看似立体,实则容易糊成一块。真实凸版印刷只有“主阴影+微反光”两个层次:
- 第一层:主压印阴影(决定凸起方向和强度),用
0 -1px 0或0 1px 0 - 第二层(可选):极细反光边,比如
0 -2px 0 rgba(255,255,255,.1),仅用于深底场景增强浮雕感 - 超过两层基本是冗余,反而降低性能(尤其动画中),还可能触发某些浏览器渲染 bug
真正难的是调参:偏移量、透明度、颜色灰度必须协同——同一组值换一个背景色就失效。动手前先打开 DevTools 实时拖动数值,比死记代码管用得多。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










