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

如何使用SVG文本裁剪背景div,替代曲线、圆形等常规裁剪形状

实现文本挖空裁剪div的解决方案

核心用SVG遮罩(mask)实现,比clip-path更适合做挖空效果,完整可运行代码如下:

完整代码

HTML

<svg width="0" height="0" style="position:absolute;">
  <defs>
    <mask id="textCutMask">
      <!-- 保留div的完整区域,和div圆角保持一致 -->
      <rect width="600" height="300" fill="white" rx="20"/>
      <!-- 黑色文本区域为要裁掉的部分,位置和原span对齐 -->
      <text x="550" y="70" font-size="140" font-weight="bold" fill="black" text-anchor="end">289</text>
    </mask>
  </defs>
</svg>
<div></div>

CSS

* {
  padding:0;
  margin:0;
  box-sizing:border-box;
}

body {
  padding:6rem;
  background-image:
    linear-gradient(45deg, #ccc 25%, transparent 25%),
    linear-gradient(-45deg, #ccc 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, #ccc 75%),
    linear-gradient(-45deg, transparent 75%, #ccc 75%);
  background-size:20px 20px;
  background-position:0 0, 0 10px, 10px -10px, -10px 0px;
}

div {
  position:relative;
  width:600px;
  height:300px;
  background:#c8c8c8;
  border:5px solid #bbb;
  border-radius:20px;
  /* 应用SVG遮罩实现文本挖空 */
  mask: url(#textCutMask);
  filter:
    drop-shadow(0  1px  1px hsl(var(--shadow-color, 0deg 0% 0%) / 0.075))
    drop-shadow(0  2px  2px hsl(var(--shadow-color, 0deg 0% 0%) / 0.075))
    drop-shadow(0  4px  4px hsl(var(--shadow-color, 0deg 0% 0%) / 0.075))
    drop-shadow(0  8px  8px hsl(var(--shadow-color, 0deg 0% 0%) / 0.075))
    drop-shadow(0 16px 16px hsl(var(--shadow-color, 0deg 0% 0%) / 0.075));
}

关键说明

  • 之前用clip-path没达到效果是因为clip-path默认定义的是要保留的区域,要做挖空的反向裁剪需要额外配置填充规则,用mask实现逻辑更直观,更适合这类场景
  • mask遮罩规则:白色对应元素显示区域,黑色对应元素透明(被裁剪)区域
  • 给SVG的text添加text-anchor="end"实现文本右对齐,方便匹配原代码中右侧定位的需求,调整x和y属性即可微调文本的裁剪位置
  • 如果需要保留原红色文本显示,可在div中再加原来的span元素,设置z-index高于div即可

内容的提问来源于stack exchange,提问作者Racheal Onyi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 13:06:08