我希望能够将数字/百分比传递给填充 svg 一部分的函数。例如,在一个桶的 svg 中,如果现实生活中的桶被填充了 90% 并且它返回 10 升作为整数我希望我网站上的桶 svg 用蓝色填充 90%。
我相信您可以将 SVG 分成带有 ID 的部分,并根据传递函数的数量填充每个 ID,然后使用某种 jquery 函数编辑每个部分?但是,我觉得只填充 SVG 的一部分一定是更受欢迎的事情,但我一直无法找到一种直接/简单的方法来做到这一点?
我希望能够将数字/百分比传递给填充 svg 一部分的函数。例如,在一个桶的 svg 中,如果现实生活中的桶被填充了 90% 并且它返回 10 升作为整数我希望我网站上的桶 svg 用蓝色填充 90%。
我相信您可以将 SVG 分成带有 ID 的部分,并根据传递函数的数量填充每个 ID,然后使用某种 jquery 函数编辑每个部分?但是,我觉得只填充 SVG 的一部分一定是更受欢迎的事情,但我一直无法找到一种直接/简单的方法来做到这一点?
最简单的方法是使用<linearGradient>
.
function setWaterLevel(percent)
{
document.getElementById("stop1").setAttribute("offset", percent+"%");
document.getElementById("stop2").setAttribute("offset", percent+"%");
}
document.getElementById("slider").addEventListener("input", function(evt) {
setWaterLevel(evt.target.value);
});
setWaterLevel(0);
<svg width="300px" viewBox="0 0 100 100">
<defs>
<linearGradient id="water" x1="0" y1="1" x2="0" y2="0">
<stop id="stop1" offset="0%" stop-color="blue"/>
<stop id="stop2" offset="0%" stop-color="transparent"/>
</linearGradient>
</defs>
<polygon points="0,0, 100,0, 80,100, 20,100"
fill="url(#water)" stroke="black"/>
</svg>
<br>
<input id="slider" type="range" min="0" max="100" step="10" value="0"/>
您最好的解决方案可能是使用两个<canvas>
标签并将填充部分写在容器部分上。这样您就可以分别计算两者,而不必担心部分 SVG 文件。
这样做,您将对一切有更大的控制权。