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

如何使用CSS实现SVG图标部分填充,适配星级评分等业务场景

可以实现,这是星级评分组件非常成熟的实现方案,基于你提供的feather图标库,可通过CSS渐变+CSS变量的方案实现任意比例的部分填充,具体实现如下:

实现原理
  • 用CSS线性渐变作为SVG的填充属性值,通过控制渐变的分割位置实现任意比例的部分填充
  • 搭配CSS变量传递填充比例,无需重复编写多套样式,支持动态赋值
完整代码示例

CSS代码

svg.star {
  /* 星型边框颜色 */
  stroke: #f59e0b;
  width: 32px;
  height: 32px;
  /* 定义填充比例变量,默认值0% */
  --fill-percent: 0%;
  /* 渐变分割:小于比例值的部分显示填充色,大于部分透明 */
  fill: linear-gradient(90deg, #f59e0b var(--fill-percent), transparent var(--fill-percent));
}

HTML代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <title>星级评分示例</title>
  <script src="https://unpkg.com/feather-icons"></script>
  <style>
    svg.star {
      stroke: #f59e0b;
      width: 32px;
      height: 32px;
      --fill-percent: 0%;
      fill: linear-gradient(90deg, #f59e0b var(--fill-percent), transparent var(--fill-percent));
    }
  </style>
</head>
<body>
  <!-- 3.2星效果示例:3个全满+1个20%填充+1个全空 -->
  <i data-feather="star" class="star" style="--fill-percent: 100%"></i>
  <i data-feather="star" class="star" style="--fill-percent: 100%"></i>
  <i data-feather="star" class="star" style="--fill-percent: 100%"></i>
  <i data-feather="star" class="star" style="--fill-percent: 20%"></i>
  <i data-feather="star" class="star" style="--fill-percent: 0%"></i>

  <script>
    feather.replace()
  </script>
</body>
</html>
动态赋值方法

如果需要根据接口返回的评分数值自动生成效果,可通过以下JS代码批量计算每个星的填充比例:

// 示例评分值,取值范围0~5,可替换为接口返回的实际数值
const rating = 3.2;
const starList = document.querySelectorAll('.star');

starList.forEach((star, index) => {
  // 计算当前星需要填充的比例
  const currentFill = rating - index;
  if (currentFill >= 1) {
    star.style.setProperty('--fill-percent', '100%');
  } else if (currentFill > 0) {
    star.style.setProperty('--fill-percent', `${currentFill * 100}%`);
  } else {
    star.style.setProperty('--fill-percent', '0%');
  }
})
方案优势
  • 无需修改SVG原始结构,兼容所有通用SVG图标库
  • 填充精度最高可到1%,完全满足半星、小数星等星级评分的常见需求
  • 填充逻辑纯CSS实现,性能开销极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:54:01