有没有办法在SVG中制作椭圆梯度?
我尝试了下面建议的代码,但它只显示一个红色椭圆,而不是渐变:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20001102//EN"
"http://www.w3.org/TR/2000/CR-SVG-20001102/DTD/svg-20001102.dtd">
<svg width="100%" height="100%"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:ev="http://www.w3.org/2001/xml-events" >
<defs>
<radialGradient id="gradientDefinition"
gradientUnits="userSpaceOnUse">
<stop stop-color="yellow" offset="0%" />
<stop stop-color="red" offset="100%" />
</radialGradient>
</defs>
<ellipse cx="250" cy="150" rx="200" ry="100" stroke="white"
stroke-width="1" stroke-dasharray="1 1 1 1"
style="fill:url(#gradientDefinition)" />
</svg>
我想要椭圆渐变,而不是椭圆内的圆形渐变。
总结前面的发现,似乎从<radialGradient>
标签中删除gradientUnits="userSpaceOnUse"
属性和值对可以使径向梯度变成(或至少看起来变成)椭圆形。此外,向每个<stop>
标签添加stop-opacity
属性和值可以更容易地看到椭圆梯度效果(至少出于演示目的)。
以下是进行了上述更改的代码:
<defs>
<radialGradient id="gradientDefinition" >
<stop stop-color="yellow" offset="0%" stop-opacity="0" />
<stop stop-color="red" offset="100%" stop-opacity="1" />
</radialGradient>
</defs>
要显示此代码似乎有效,请执行以下操作:
参见:椭圆radialGradient
与圆形radialGradient
网上还有一个教程,它似乎为类似的椭圆梯度方法提供了类似的行为,该教程的结果可以在这个jsFiddle中找到。
注意:如果这种方法不适合您的目的,可能还有其他更好的方法(可能与梯度变换或类似的东西有关......