【发布时间】:2018-10-18 21:41:45
【问题描述】:
我正在尝试仅使用单个 svg 制作非常轻量级的 SVG 星级组件。
我有一个带有 5 颗星的形状,我正在用水平渐变填充它们。
在这里,运行代码sn-p:
<svg width="68" height="11" viewBox="0 0 68 11">
<linearGradient id="grad">
<stop offset="70%" stop-color="tomato"/>
<stop offset="70%" stop-color="grey"/>
</linearGradient>
<g fill="url(#grad)">
<path d="M6 8.84L9.708 11l-.984-4.07L12 4.192l-4.314-.354L6 0 4.314 3.838 0 4.192 3.276 6.93 2.292 11zM20 8.84L23.708 11l-.984-4.07L26 4.192l-4.314-.354L20 0l-1.686 3.838L14 4.192l3.276 2.738-.984 4.07zM34 8.84L37.708 11l-.984-4.07L40 4.192l-4.314-.354L34 0l-1.686 3.838L28 4.192l3.276 2.738-.984 4.07zM48 8.84L51.708 11l-.984-4.07L54 4.192l-4.314-.354L48 0l-1.686 3.838L42 4.192l3.276 2.738-.984 4.07zM62 8.84L65.708 11l-.984-4.07L68 4.192l-4.314-.354L62 0l-1.686 3.838L56 4.192l3.276 2.738-.984 4.07z"/>
</g>
</svg>
评分可以是小数(不仅是“满”星和“半星”),甚至可以是 3.35。
问题是 - 我不知道如何动态定义offset="70%"。
- 有没有办法将百分比传递给 SVG? (例如我可以使用
currentColor从 CSS 传递颜色) - 是否有某种方法可以应用线性渐变而无需通过
url(#id)引用它?我想避免为每个评分生成唯一 ID,每页可能有数百个。 - 或者也许有某种方法可以仅通过 CSS 填充 X% 的水平空间?
【问题讨论】: