gpt4 book ai didi

javascript - 如何使用JS动态改变复杂svg的颜色

转载 作者:行者123 更新时间:2023-12-02 14:06:34 24 4
gpt4 key购买 nike

我想使用 JavaScript 动态更改图像的颜色。我能够使用 JavaScript 加载 svg 路径并更改颜色,但我还想使用更复杂的图像。 (例如,当我动态更改外部图像颜色时,中心椭圆形应为黑色。)

这是我更简单的例子:一个缺少孔的椭圆形;我可以在 JavaScript 中动态为其着色。

var color = 'red';
var svgSource = "<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='250' height='150'><path stroke='black' stroke-width='2' fill='" + color + "' d='M 122.55664 14.691406 A 93.393089 51.964569 0 0 0 30.900391 67.289062 A 93.393089 51.964569 0 0 0 124.86133 118.61133 A 93.393089 51.964569 0 0 0 217.67969 66.648438 L 217.65039 65.365234 A 93.393089 51.964569 0 0 0 122.55664 14.691406 z M 91.923828 63.494141 A 47.749851 20.034533 0 0 1 140.54297 83.03125 L 140.55664 83.525391 A 47.749851 20.034533 0 0 1 93.101562 103.56055 A 47.749851 20.034533 0 0 1 45.060547 83.773438 A 47.749851 20.034533 0 0 1 91.923828 63.494141 z' /></svg>";

// display image
document.getElementById("image").innerHTML = "<img src=\"data:image/svg+xml;utf8," + svgSource + "\">";;
<div id="image"></div>

问题:如何使用更复杂的路径来做到这一点?

我的更复杂的对象由两条路径组成,颜色变化的外部形状:

M 217.67871,66.647797 A 93.393089,51.964569 0 0 1 124.86224,118.61138 93.393089,51.964569 0 0 1 30.899652,67.289449 93.393089,51.964569 0 0 1 122.55587,14.692141 93.393089,51.964569 0 0 1 217.65023,65.364589

和一个由

定义的实心黑色内部椭圆形
M 140.55713,83.526031 A 47.749851,20.034533 0 0 1 93.102092,103.56018 47.749851,20.034533 0 0 1 45.061071,83.773416 47.749851,20.034533 0 0 1 91.922895,63.494936 47.749851,20.034533 0 0 1 140.54257,83.031301

最佳答案

如果将两个形状组合成一条路径,则不会有两个填充的形状。通常,您最终只会得到一种带有孔的形状。而且您将无法更改孔的颜色。

您需要做的是有两个单独的 <path>元素

关于javascript - 如何使用JS动态改变复杂svg的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007867/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com