You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用CSS为文本添加内阴影?现有代码未实现需求求助

实现文本内阴影的解决方案

你当前的代码没法实现内阴影,核心原因是CSS的text-shadow属性只能添加外阴影,哪怕配合background-clip: text,阴影也只会出现在文字轮廓外侧,无法形成内部凹陷的阴影效果。

下面给你两种可行的模拟文本内阴影的方法:


方法一:伪元素复制文字+层级覆盖

通过伪元素生成和原文字完全一致的副本,给副本添加阴影后放在原文字下方,利用层级关系让阴影看起来像是从文字内部透出:

.leftSide > p {
  font-size: 170px;
  font-family: 'QuickSand';
  text-align: end;
  position: relative;
  color: #2A2A2A; /* 原文字颜色 */
}

.leftSide > p::after {
  content: attr(data-text); /* 利用data属性复用文字内容 */
  position: absolute;
  top: 0;
  right: 0; /* 和原文字对齐 */
  color: transparent;
  text-shadow: 0 0 5px rgba(0, 0, 0, 0.25); /* 内阴影的模糊程度和颜色 */
  z-index: -1; /* 把阴影副本放在原文字下方 */
}

对应的HTML需要给<p>标签添加data-text属性,确保伪元素能获取到文字内容:

<div className={styles.leftSide}>
   <p data-text="A">A</p>
</div>

方法二:drop-shadow滤镜+背景裁剪遮罩

利用filter: drop-shadow给文字副本添加阴影,再用背景裁剪的遮罩层只保留文字形状,让阴影从下方透出:

.leftSide > p {
  font-size: 170px;
  font-family: 'QuickSand';
  text-align: end;
  position: relative;
}

/* 带阴影的文字副本 */
.leftSide > p::before {
  content: attr(data-text);
  position: absolute;
  top: 0;
  right: 0;
  color: #2A2A2A;
  filter: drop-shadow(0 0 5px rgba(0, 0, 0, 0.25));
  z-index: -1;
}

/* 遮罩层:用背景裁剪只显示文字形状 */
.leftSide > p::after {
  content: attr(data-text);
  position: absolute;
  top: 0;
  right: 0;
  background-color: #2A2A2A; /* 和原文字颜色一致 */
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

HTML同样需要data-text属性:

<div className={styles.leftSide}>
   <p data-text="A">A</p>
</div>

你可以根据Figma里的内阴影参数(偏移量、模糊度、颜色)调整text-shadow或drop-shadow的数值,直到匹配设计稿效果。

内容的提问来源于stack exchange,提问作者Fidan Agushi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 06:03:09