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

如何为SVG环形进度条的浅灰色描边添加内盒阴影

解决方案

要给SVG环形进度条的浅灰色基础描边添加内阴影,不能直接使用CSS的box-shadow属性,需要借助SVG自带的滤镜能力实现,操作步骤如下:

步骤1:修改SVG结构,添加内阴影滤镜定义

在你的<svg>标签内部新增<defs>标签,声明专门用于描边内阴影的滤镜:

<svg class="progress-bar">
  <!-- 新增滤镜定义部分 -->
  <defs>
    <filter id="inner-stroke-shadow" x="-50%" y="-50%" width="200%" height="200%">
      <!-- 阴影偏移、模糊设置 -->
      <feOffset dx="1" dy="1" in="SourceAlpha" result="offsetblur" />
      <feGaussianBlur stdDeviation="2" in="offsetblur" result="blur" />
      <!-- 阴影颜色设置,这里用浅灰色,可自行调整 -->
      <feFlood flood-color="#e0e0e0" flood-opacity="0.7" result="shadowColor" />
      <feComposite in="shadowColor" in2="blur" operator="in" result="shadow" />
      <!-- 裁剪出仅作用于描边区域的内阴影 -->
      <feComposite in="shadow" in2="SourceGraphic" operator="atop" result="innerShadow" />
      <feComposite in="innerShadow" in2="SourceGraphic" operator="over" />
    </filter>
  </defs>
  <circle class="base-circle-bar" />
  <circle class="progress-circle-bar" />
</svg>

步骤2:给基础环形添加滤镜CSS属性

修改.base-circle-bar的样式,绑定上面定义的滤镜:

.progress-bar .base-circle-bar {
    stroke: #f5f4f4;
    fill: transparent;
    stroke-width: 28;
    r: 120;
    cx: 149;
    cy: 136;
    /* 新增这一行应用内阴影滤镜 */
    filter: url(#inner-stroke-shadow);
}

效果调整说明

你可以根据需求修改滤镜参数实现不同的阴影效果:

  • 修改<feGaussianBlur>的stdDeviation值调整阴影模糊程度,数值越大越模糊
  • 修改<feOffset>的dx、dy值调整阴影的偏移方向和距离
  • 修改<feFlood>的flood-color和flood-opacity调整阴影的颜色和透明度

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:48:01