有没有办法在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>
我想要一个椭圆渐变,而不是椭圆内的圆形渐变。
答案 0 :(得分:1)
总结之前的调查结果,似乎从gradientUnits="userSpaceOnUse"
标记中删除<radialGradient>
属性和值对允许径向渐变成为(或至少看起来变成)椭圆形。此外,为每个stop-opacity
标记添加<stop>
属性和值可以更容易地看到椭圆渐变效果(至少出于演示目的)。
以下是进行了上述更改的代码:
<defs>
<radialGradient id="gradientDefinition" >
<stop stop-color="yellow" offset="0%" stop-opacity="0" />
<stop stop-color="red" offset="100%" stop-opacity="1" />
</radialGradient>
</defs>
要显示此代码似乎有效:
请参阅: elliptical radialGradient
vs circular radialGradient
还有一个tutorial online似乎为类似的椭圆渐变方法提供了类似的行为,该教程的结果可以在jsFiddle中找到。
注意:如果此方法不适用于您的目的,可能还有其他一些更好的方法(可能与gradient transformations或类似的东西有关...)