SVG 中的椭圆渐变



有没有办法在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中找到。

注意:如果这种方法不适合您的目的,可能还有其他更好的方法(可能与梯度变换或类似的东西有关......

相关内容

  • 没有找到相关文章

最新更新