Javascript 如何在不使用SVG文件本身ID的情况下更改SVG颜色?
刚开始和SVG合作,我遇到了一个问题。基本上,我使用名词projectapi pro version()将图标刮取为SVG。现在,我将SVG保存在本地文件夹中。我想能够改变图标的颜色(现在他们下载为黑色,我想改变颜色)。我通过标记加载SVG,并引用保存SVG的文件夹。我知道使用vanilla JS(使用document.getElementById('svgObject').contentDocument,然后使用唯一id访问内部文档)更改颜色非常简单。问题是我保存的SVG没有任何ID,我也不知道如何给他们一个ID。现在,我正在循环浏览文件夹并在网页中显示文件夹内容。这一切都很好,但我想不出如何改变颜色Javascript 如何在不使用SVG文件本身ID的情况下更改SVG颜色?,javascript,html,css,svg,Javascript,Html,Css,Svg,刚开始和SVG合作,我遇到了一个问题。基本上,我使用名词projectapi pro version()将图标刮取为SVG。现在,我将SVG保存在本地文件夹中。我想能够改变图标的颜色(现在他们下载为黑色,我想改变颜色)。我通过标记加载SVG,并引用保存SVG的文件夹。我知道使用vanilla JS(使用document.getElementById('svgObject').contentDocument,然后使用唯一id访问内部文档)更改颜色非常简单。问题是我保存的SVG没有任何ID,我也不知
基本上,我只希望文件夹中的所有图标都设置为不同的颜色(例如,它们都可以设置为“红色”。它们不需要每个都有不同的颜色)。如何在不指定实际ID的情况下实现这一点(因为SVG在下载时不包含ID),或者如何向SVG标记本身添加ID?您可以给SVG一个
类而不是ID
&使用javascript的GetElementsByCassName
设置颜色
这篇Mozilla文章解释了:
假设您的页面上有一堆svg
s,并且希望将每个svg的颜色更改为相同的颜色,则可以执行以下操作:
函数更改颜色(){
const svgs=document.getElementsByTagName('svg')
for(设i=0;i
这将遍历页面上的每个svg
,并将其fill
属性设置为red
本质上,这相当于这样做:
...
下面是一个快速演示:
或者,如果您正在使用类似于img
标记的东西将svg
加载到页面上,那么使用object
可以让您执行与上面相同的操作
假设您的html
如下所示:
那么
函数更改颜色(){
const objects=document.getElementsByTagName('对象')
for(设i=0;i
实现这一点的最佳方法是使用svg元素的填充
属性。现在,你可以用两种方法解决这个问题
方法1:
使用img
这样的标签
。在这种情况下,您需要直接编辑文件,也就是说,它应该反映您引用svg的任何地方
方法2:
您可以使用svg作为内联,如下所示。这种方法的优点是,如果您有相同svg的不同实例,那么这就是解决方法。另一方面,如果您的svg在整个应用程序中保持不变,那么这就违反了规则
svg{
最大宽度:200px;
}
如果您不介意svg都是一种颜色,可以将svg的fill
属性设置为currentcolor
。然后它将采用它所在元素的颜色
#span1{
颜色:红色;
}
#span2{
颜色:蓝色;
}
#span3{
颜色:绿色;
}
HTML5标志
HTML5标志
HTML5标志
一个选项是使用svg作为图像(或者作为对象,如果您愿意)和过滤器来更改颜色
#图像{过滤器:反转(27%)深褐色(51%)饱和(2878%)色调旋转(346度)亮度(104%)对比度(97%)}
您是否尝试过使用填充属性?您是否可以使用css
并执行svg{color:red}
?您希望所有实例的颜色都更改,还是仅在某些页面上更改?嘿,感谢您这么快地回答!:)@goto1我确实需要使用fill属性,但我不确定如何指定SVGitself@NidhinJoseph所有实例!谢谢哦,天哪,你在这里救了我!!非常感谢你,工作得很有魅力