如何使用';内联';元素上的SVG渐变,如<;线路>;?

如何使用';内联';元素上的SVG渐变,如<;线路>;?,svg,gradient,inline-styles,Svg,Gradient,Inline Styles,是否可以在不必首先在下定义梯度的情况下实现此梯度 我正在制作一张网络地图,显示设备(交换机、路由器等)之间链路上的网络负载。我使用SVG绘制这幅图,但我不想定义所有渐变,因为开始(上行)和结束(下行)颜色已经从后端系统提供给我,并且可以通过应用程序中的模板变量访问 我希望使用内联样式,因为在代码方面更容易做到,因为我不必跟踪数千个链接引用,并确保为每个链接指定正确的渐变,因为每个渐变在网络地图中绘制的每一行(链接负载)都“99.9%”是唯一的 简单地说,我可以这样做吗:您可以使用一个数据URI,

是否可以在不必首先在
下定义梯度的情况下实现此梯度

我正在制作一张网络地图,显示设备(交换机、路由器等)之间链路上的网络负载。我使用SVG绘制这幅图,但我不想定义所有渐变,因为开始(上行)和结束(下行)颜色已经从后端系统提供给我,并且可以通过应用程序中的模板变量访问

我希望使用内联样式,因为在代码方面更容易做到,因为我不必跟踪数千个链接引用,并确保为每个链接指定正确的渐变,因为每个渐变在网络地图中绘制的每一行(链接负载)都“99.9%”是唯一的


简单地说,我可以这样做吗:
您可以使用一个数据URI,即fill=“url(data:image/svg+xml;base64,…encoded full svg…#mygradient)”


这里有一个例子:

首先,我可能在问这个问题之前就应该想到这一点,但我的借口是我还在学习svg。我建议的答案可能也不完全正确。请参阅底部的代码示例,该示例可能是最佳解决方案,并且不必跟踪渐变的不断变化的链接引用

但是,我解决了我的问题,将以下代码包装在一个
中,用于我绘制的每个链接/线条,如下所示:

  <linearGradient id="gradientForLoopi" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#000066;stop-opacity:1" />
      <stop offset="50%" style="stop-color:#000066;stop-opacity:1" />
      <stop offset="51%" style="stop-color:#00ffff;stop-opacity:1" />
      <stop offset="100%" style="stop-color:#00ffff;stop-opacity:1" />
  </linearGradient>
  <line stroke="url(#gradientForLoopi)" x1="130.8757632890282"
     y1="163.6818288670081" x2="651.9483366457684" y2="415.704113030817" />

(我可能也不需要这样做,但出于语义目的,我这样做了,这样我可以更轻松地使用d3js)

在该领域做更多的研究,更好的解决方案是在HTML5 doctype浏览器中普遍使用(草稿作为公关写作)(仅部分使用SVG上下文标题(?),而不是在HTML5文档中内联
),请参阅HTML5 doctype不工作,同样的
-内容具有svg内容类型/.svg正常工作

现在,您可能已经可以使用a来使用该草案了,我还没有开始使用,而且可能还不能在“所有通用浏览器”中使用

与你一起做一些简单的事情(我假设):



+一个漂亮的把戏!遗憾的是,这在Safari v5.1.7或Chrome V19上不起作用这可能是内联SVG,但不是我想要的。我将在下面发布我的解决方案和研究。
<defs>
    <linearGradient id="linkload" x1="0%" y1="0%" x2="0%" y2="100%">
        <stop offset="0%" style="stop-color:param(uplink_color);stop-opacity:1" />
          <stop offset="50%" style="stop-color:param(uplink_color);stop-opacity:1" />
          <stop offset="51%" style="stop-color:param(downlink_color);stop-opacity:1" />
          <stop offset="100%" style="stop-color:param(downlink_color);stop-opacity:1" />
    </linearGradient>
    <line stroke="url(#linkload)" x1="param(x1)"
        y1="param(y1)" x2="param(x2)" y2="param(y2)" />
</defs>

<use id="linkid" xlink:href="#linkload" x1="300" x2="0" y1="0" y2="300">
    <param name="downlink_color" value="#00ffff" />
    <param name="uplink_color" value="#006666" />
</use>
<use id="linkid" .. for every link..