将渐变应用于 SVG 元素中的多个元素

saz*_*azr 0 html javascript css svg

我正在尝试使用 SVG 元素创建一个看起来像这样的箭头:

在此处输入图片说明

这是我的尝试:

在此处输入图片说明

如您所见,渐变同时应用于我的 SVG 中的矩形和多边形有没有办法在我的 SVG 的顶部图像中复制渐变效果?

也许有一种 CSS 方法可以做到这一点?也许我必须使用路径或单个多边形元素来创建箭头而不是矩形多边形

<svg width="424" height="100">
    <defs>
        <radialGradient id="grad1" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
          <stop offset="0%" style="stop-color:rgb(255,255,255); stop-opacity:0" />
          <stop offset="100%" style="stop-color:rgb(13,20,93);  stop-opacity:1" />
        </radialGradient>
    </defs>

    <rect x="0" y="25" rx="0" ry="0" width="212" height="50" fill="url(#grad1)"> </rect>
    <polygon points="212,0 212,100 424,50" fill="url(#grad1)"></polygon>
</svg>
Run Code Online (Sandbox Code Playgroud)

v1n*_*nce 6

您可以通过对两个形状进行分组来“制作”单个路径,然后将渐变应用于该组

<svg
 xmlns:svg="http://www.w3.org/2000/svg"
 xmlns="http://www.w3.org/2000/svg"
 xmlns:xlink="http://www.w3.org/1999/xlink"
 version="1.1"
 width="424"
 height="100"
 id="svg2996">
 <defs>
 <radialGradient cx="0.5" cy="0.5" r="0.5" fx="0.5" fy="0.5" id="grad1">
  <stop style="stop-color:#ffffff;stop-opacity:0" offset="0" />
  <stop style="stop-color:#0d145d;stop-opacity:1" offset="1" />
 </radialGradient>
 <radialGradient cx="212" cy="50" r="212" fx="212" fy="50" id="radialGradient3809" xlink:href="#grad1"
 gradientUnits="userSpaceOnUse"
 gradientTransform="matrix(1,0,0,0.23584906,0,38.207547)" />
 </defs>
 <g style="fill:url(#radialGradient3809);fill-opacity:1">
  <rect width="212" height="50" rx="0" ry="0" x="0" y="25" />
  <polygon points="424,50 212,0 212,100 " />
 </g>
</svg>
Run Code Online (Sandbox Code Playgroud)

代码笔