SVG 线性渐变显示在一条路径上,而不显示在另一条路径上

克里斯·萨尔瓦多

除了 d 属性中的结尾数字外,我有两条非常相似的路径。第一个路径显示正确,但第二个路径不显示。奇怪的是,如果我将第二条路径的笔划更改为我定义的渐变以外的任何东西,它就会出现。如果我从最后一个数字中截断小数,也会出现渐变。有什么原因为什么第二个没有出现渐变?

为了它的价值,我试图让它在谷歌浏览器上工作。

<svg height="0" width="0">
  <defs>
    <linearGradient id="pageSearchGradient" x1="0%" y1="0%" x2="100%" y2="0%"><stop offset="0%" stop-color="#a0c3d2" stop-opacity="0.75"></stop><stop offset="40%" stop-color="#F59B23" stop-opacity="0.85"></stop><stop offset="100%" stop-color="#F59B23" stop-opacity="1"></stop>
  </defs>
</svg>

<svg width="1600" height="500" class="sankey-diagram "><g width="1450" height="500" transform="translate(150, 0)"><g class="sankey-links">

    <!--  Only their decimal points differ for the last number and yet this one is the one that shows up -->
    <path d="M12,436.7529384197002C365.5,436.7529384197002,365.5,436.75293841969994,719,436.38406598523085" class="sankey-link " style="stroke: url(&quot;#pageSearchGradient&quot;); opacity: 0.3; stroke-width: 126.494;"></path>

    <path d="M12,436.7529384197002C365.5,436.7529384197002,365.5,436.75293841969994,719,436.75293841969994" class="sankey-link " style="stroke: url(&quot;#pageSearchGradient&quot;); opacity: 0.3; stroke-width: 126.494;"></path>

</svg>

链接到https://codepen.io/anon/pen/OvEzNJ?editors=1000#0

程序

不同之处在于两条路径的边界框的高度:

> document.querySelector('path:nth-child(1)').getBBox().height
> 0.368865966796875
> document.querySelector('path:nth-child(2)').getBBox().height
> 0

您正在为梯度向量使用百分比单位,并且您没有指定gradientUnits

<linearGradient id="pageSearchGradient" x1="0%" y1="0%" x2="100%" y2="0%">

规范有以下说关于这些条件:

如果gradientUnits =“objectBoundingBox”,用户坐标系统的属性x1y1x2y2使用被施加梯度的元件的边界框,然后的变换特性指定应用被建立gradientTransform百分比表示相对于对象边界框的值。
gradientUnits="objectBoundingBox"gradientTransform为单位矩阵时,线性梯度的法线垂直于对象边界框空间中的梯度向量(即抽象坐标系,其中(0,0)位于边界框的顶部/左侧)对象边界框和 (1,1) 位于对象边界框的底部/右侧)。

如果该边界框没有高度,则顶部(在边界框空间中定义 0)和底部(定义 1)是相同的值。似乎浏览器(我也可以在 Firefox 中看到它)对“抽象坐标系”感到困惑,不再知道如何计算梯度向量及其法线。

我会称之为一个错误。我能想到的最佳解决方法是使用gradientUnits="userSpaceOnUse",或确保您的路径边界框始终具有非零的宽度和高度。(阈值似乎位于第七位有效数字附近。)

这是显示效果的测试用例。应该有三个矩形,第一个用 绘制<rect>,另外两个用绘制<line stroke-width=...>对于中间的线,y1 和 y2 是相同的,对于底部的它们不同。

<svg width="200" height="150">
  <linearGradient id="lg" x1="0%" y1="0%" x2="100%" y2="0%">
    <stop stop-color="yellow" offset="0" />
    <stop stop-color="green" offset="1" />
  </linearGradient>
  <rect x="5" y="0" width="200" height="40" style="fill:url(#lg)" />
  <line x1="0" y1="75" x2="200" y2="75" style="stroke-width:40;stroke:url(#lg)" />
  <line x1="0" y1="125" x2="200" y2="126" style="stroke-width:40;stroke:url(#lg)" />
</svg>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使SVG路径像一条平滑的线,而不是参差不齐

来自分类Dev

处理一条路径中的多个中间节点的最佳方法?

来自分类Dev

emberjs对一条路线使用多个路径/ URL

来自分类Dev

使“ linkTo”在两条路径而不是一条路径上处于活动状态

来自分类Dev

如何判断一条路径是否是另一条路径的祖先?

来自分类Dev

SVG路径叠加并动画出另一条路径

来自分类Dev

如何在Express应用中获取下一条路线的路径

来自分类Dev

Paper.js从一条路径绘制多个平行路径

来自分类Dev

在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

来自分类Dev

Talend ESB:如何从另一条路线呼叫一条路线?

来自分类Dev

从另一条路线到一条路线的快速调用GET方法

来自分类Dev

一条路径中最多具有十个负边缘的dijkstra

来自分类Dev

如何将图案和渐变混合到一条路径中?

来自分类Dev

SVG / EPS(向量)如何用另一条路径剪切一条路径?

来自分类Dev

如何在Express中将请求主体的数据从一条路径移动到另一条路径

来自分类Dev

将一条路径转发到另一条路径,并将空格转换为连字符

来自分类Dev

“密钥库”的值无效。它必须解析为一条路径

来自分类Dev

如何判断一条路径是否是另一条路径的祖先?

来自分类Dev

进入另一条路线的商店

来自分类Dev

阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

来自分类Dev

Paper.js从一条路径绘制多个平行路径

来自分类Dev

在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

来自分类Dev

一条路线的gzip响应

来自分类Dev

如何在一条路径上取得结果?

来自分类Dev

django urls 保留最后一条路径

来自分类Dev

递归函数提前返回只检查一条路径

来自分类Dev

节点:仅在第一条路径上上传到 S3 失败

来自分类Dev

从服务导航到另一条路线

来自分类Dev

如果路径不存在尝试另一条路径

Related 相关文章

  1. 1

    使SVG路径像一条平滑的线,而不是参差不齐

  2. 2

    处理一条路径中的多个中间节点的最佳方法?

  3. 3

    emberjs对一条路线使用多个路径/ URL

  4. 4

    使“ linkTo”在两条路径而不是一条路径上处于活动状态

  5. 5

    如何判断一条路径是否是另一条路径的祖先?

  6. 6

    SVG路径叠加并动画出另一条路径

  7. 7

    如何在Express应用中获取下一条路线的路径

  8. 8

    Paper.js从一条路径绘制多个平行路径

  9. 9

    在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

  10. 10

    Talend ESB:如何从另一条路线呼叫一条路线?

  11. 11

    从另一条路线到一条路线的快速调用GET方法

  12. 12

    一条路径中最多具有十个负边缘的dijkstra

  13. 13

    如何将图案和渐变混合到一条路径中?

  14. 14

    SVG / EPS(向量)如何用另一条路径剪切一条路径?

  15. 15

    如何在Express中将请求主体的数据从一条路径移动到另一条路径

  16. 16

    将一条路径转发到另一条路径,并将空格转换为连字符

  17. 17

    “密钥库”的值无效。它必须解析为一条路径

  18. 18

    如何判断一条路径是否是另一条路径的祖先?

  19. 19

    进入另一条路线的商店

  20. 20

    阿帕奇骆驼(Apache Camel),从另一条路线调用一条路线

  21. 21

    Paper.js从一条路径绘制多个平行路径

  22. 22

    在Python中使用Boto将内容从s3存储桶的一条路径递归复制到另一条路径

  23. 23

    一条路线的gzip响应

  24. 24

    如何在一条路径上取得结果?

  25. 25

    django urls 保留最后一条路径

  26. 26

    递归函数提前返回只检查一条路径

  27. 27

    节点:仅在第一条路径上上传到 S3 失败

  28. 28

    从服务导航到另一条路线

  29. 29

    如果路径不存在尝试另一条路径

热门标签

归档