Canvas文字阴影需符合光学逻辑,关键在shadowColor、shadowOffsetX/Y、shadowBlur三参数协同,并配合描边与填充实现浮雕感;长阴影和渐变投影可增强纵深与真实感。

Canvas文字阴影不是加个模糊就完事,关键在参数组合是否符合光学逻辑——偏移方向要统一、模糊值得匹配距离感、颜色透明度得压住视觉权重,否则文字还是扁平。
基础阴影四要素必须配齐
Canvas不默认开启阴影,四个属性缺一不可:
- shadowColor:必须设,推荐用rgba如rgba(0,0,0,0.4),避免纯黑抢眼
- shadowOffsetX/Y:模拟光源方向,常用(2, 2)或(4, 4)模拟左上45°光
- shadowBlur:控制软硬,0是硬边印痕,8–12适合中等立体感
- 设置后仅对后续fillText()或strokeText()生效,画完记得清空ctx.shadowColor = ''防误影响
描边+填充+阴影三重叠加出浮雕感
单靠阴影撑不起立体,需配合描边与主体色形成明暗交界:
- 先用strokeText()描一层细边(lineWidth=1.5,颜色略深于主色)
- 再用fillText()填主体色,盖住部分描边形成厚度错觉
- 阴影参数建议:OffsetX=0, OffsetY=3, Blur=6, Color=rgba(0,0,0,0.35),让影子稳稳托住文字底部
长阴影增强纵深,适合标题与图标
扁平设计中,长阴影能快速建立空间关系,Canvas里靠手动复制+位移实现:
- 复制文字图层,填纯黑,透明度调至25%
- 用translate()或坐标微调,向右下移动80–120px(视字号而定)
- 将黑色副本save()/restore()后置于底层,确保不遮挡原字
- 可叠加两层不同位移与透明度的副本(如100px/20% + 130px/10%),模拟光影衰减
渐变阴影提升真实感
真实投影随距离变淡,Canvas虽不支持直接渐变阴影,但可用技巧模拟:
- 先用createLinearGradient()生成垂直渐变(如#000000→transparent)
- 绘制一个略宽于文字的矩形作为“投影底”,位置在文字正下方,y偏移约10–15px
- 再叠加一层常规阴影(Blur=4, Opacity=0.2),让过渡更自然


















