【问题标题】:SVG Rectangular and Path GradientSVG 矩形和路径渐变
【发布时间】:2018-04-20 08:27:44
【问题描述】:

我使用下面的radialGradient来给出一个灯泡发光效果:

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     width="100%" height="100%"
     viewBox="0 0 100 100">

    <radialGradient id="radial" cx="50" cy="50" r="50"
        gradientUnits="userSpaceOnUse">
        <stop  offset="0.8" style="stop-color:#00FFFF"/>
        <stop  offset="1" style="stop-color:#004444"/>
    </radialGradient>

    <circle cx="50" cy="50" r="50"
            fill="url(#radial)"/>
</svg>

但是对于 Rectangular 和 Path Gradient 或任何 Custom Shape Gradient ,我该如何做同样的事情呢?
我们在 MS PowerPoint 中有这个选项,称为矩形渐变和路径渐变。
它从中心开始,每个边缘线的第一个停止点 0.8 和第二个停止点 1,就像上面的效果一样。

这些渐变在 Illustrator 中可用吗?

【问题讨论】:

  • SVG 不支持这种渐变。
  • 您可以尝试使用阴影来伪造它。看看这个:stackoverflow.com/questions/20778568/…
  • @Austin 我整个晚上都在你的链接中尝试了所有组合。没有什么能产生这样的效果。我已经编辑了我的帖子

标签: svg path gradient shape effect


【解决方案1】:

您可以通过将形状拆分为多个子形状来伪造它。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     width="100%" height="100%"
     viewBox="0 0 100 100">

    <linearGradient id="horiz" x1="0.5" spreadMethod="reflect">
        <stop  offset="0.8" style="stop-color:#00FFFF"/>
        <stop  offset="1" style="stop-color:#004444"/>
    </linearGradient>

    <linearGradient id="vert" y1="0.5" x2="0" y2="1" spreadMethod="reflect">
        <stop  offset="0.8" style="stop-color:#00FFFF"/>
        <stop  offset="1" style="stop-color:#004444"/>
    </linearGradient>

    <polygon points="0,0, 100,100, 100,0, 0,100" fill="url(#horiz)"/>
    <polygon points="0,0, 100,0, 0,100, 100,100" fill="url(#vert)"/>
</svg>

它的工作原理是我们有两个沙漏形的多边形,我们对每个多边形应用线性渐变。

<svg xmlns="http://www.w3.org/2000/svg" version="1.1"
     xmlns:xlink="http://www.w3.org/1999/xlink"
     width="100%" height="100%"
     viewBox="0 0 100 100">

    <polygon points="0,0, 100,100, 100,0, 0,100" fill="gold"/>
    <polygon points="0,0, 100,0, 0,100, 100,100" fill="green"/>
</svg>

【讨论】:

  • 有没有办法去除两个沙漏形多边形之间的白线/空间?使用实心填充时我没有看到任何白线,但使用 作为填充时会出现间隙。在上面的第一个示例中,有一条细白线/间隙,但在第二个示例中不可见。我也想从第一个示例中删除白线/间隙。
  • 你的意思是从每个角落斜向外的浅色细线吗?
  • 是的。颜色越深越显眼。
  • 在我的原始示例中,主要原因是抗锯齿伪影。您可以通过使用矩形作为最后的渐变并在其顶部覆盖一个沙漏来消除由抗锯齿引起的部分效果(请参阅jsfiddle.net/kw6duvqm/1)。不幸的是,我认为您不能完全摆脱这种影响,因为其余的都是视错觉。角落像素颜色的突然变化导致您看到一条对角线。如果你拍摄那条“线”的快照并放大位图,你会看到这条线几乎消失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-13
  • 2020-11-29
  • 2016-12-26
相关资源
最近更新 更多