如何从这个具有填充的复杂路径的 svg 更改为具有没有填充的简单路径的上述 svg?

Posted

技术标签:

【中文标题】如何从这个具有填充的复杂路径的 svg 更改为具有没有填充的简单路径的上述 svg?【英文标题】:How to change from this svg with this complex path that has fill to the above svg that has simple path with no fill? 【发布时间】:2013-12-31 03:41:46 【问题描述】:

我有一些具有复杂/复合路径的 svg 文件。这些在 Inkscape 或 Illustrator 中使用压敏笔绘制的路径在路径之间有微小的填充。在 Illustrator 中,您可以选择整个路径,然后将笔更改为基本笔(无压力感应),这会将路径更改为简单路径。如何使用 js 实现这一点?

我在这里有两种路径的 2 个示例:

   http://jsfiddle.net/KRKz9/3/ 

如何从这个具有填充的复杂路径的 svg 更改为具有使用 js 没有填充的简单路径的上述 svg?

编辑:嗨@罗伯特。我有这样的:

function makeSame()  
var paths = maing.getElementsByTagName("path"); 
for (var i=0, max=paths.length; i < max; i++)  paths[i].style.stroke="none"; paths[i].style.fill="blue"; 
paths[i].style.stroke_width=2; 
  

在 jsbin 中:jsbin.com/sovit/1/edit

我卡在这里了,你能纠正一下吗?

编辑:谢谢@robert。我只是这样纠正它:

var paths = document.getElementsByTagName("path"); 

现在的问题是,重复的路径仍然存在: (这个 jsfiddle 示例以及使用上述代码生成的 svg 代码,表明每行似乎有 2 条路径)

http://jsfiddle.net/Y35sV/2/

请问可以删除每行的第二条路径吗?

【问题讨论】:

最后一部分似乎是一个不同的问题。 非常感谢@robert。这是问题:***.com/questions/20847767/… @RobertLongson。你能否给我一个关于如何解决这个问题的提示?!如果这需要很多或简单的代码可以做到这一点? 【参考方案1】:

大概是这样的吧?

function makeSame() 

    var paths = document.getElementsByTagName("path");
    for (var i=0, max=paths.length; i < max; i++) 
        paths[i].style.stroke="none";
        paths[i].style.fill="#0000C6";
    

这将转换路径,改变它们的填充和描边,以便它们匹配。

【讨论】:

感谢罗伯特的解决方案。您能否将其应用于我上面的 jsfiddle 示例,看看它是如何工作的?我无法让它工作! 嗨@Robert.Here 我有这样的:function makeSame() var paths = maing.getElementsByTagName("path"); for (var i=0, max=paths.length; i 我写了 document.getElementsByTagName 而你写了 maing.getElementsByTagName 如果你在浏览器控制台中查看你会看到你的代码在那一行有错误。

以上是关于如何从这个具有填充的复杂路径的 svg 更改为具有没有填充的简单路径的上述 svg?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 SVG 的填充颜色更改为背景图像? [复制]

无法在具有填充颜色的 SVG 路径内显示图像

如何使用 php 或 JavaScript 从 svg 中删除白色填充

SVG - 具有笔划宽度的圆圈未填充铬

无法将 SVG 的颜色更改为白色

如何在 HTML 中更改 SVG 中路径的笔触颜色和填充颜色?