载入外部的 svg 图形,怎么改变其颜色?

载入外部的 svg 图形,怎么改变其颜色?,第1张

载入外部的 svg 图形,怎么改变其颜色?,第2张

  • 看了几个都是直接在 html 里用 svg 标签的,如果外部导入,我用 embed,好像就读不到 svg 内部的属性了。
  • 请问有什么方法可以用嘛?因为 svg 每次都不同,我需要载入外部的 svg。
  • svg 文件形态如下( illustrator 生成的):
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 23.0.3, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
	 viewBox="0 0 800 800" style="enable-background:new 0 0 800 800;" xml:space="preserve">
<style type="text/css">
	.st0{fill:#FF0000;}
	.st1{fill:#FCEE21;}
	.st2{fill:#FFFFFF;}
</style>
<g id="main">
	<g>
		<circle class="st0" cx="400" cy="400" r="300"/>
	</g>
</g>
<g id="second">
	<g>
		<g>
			<path class="st1" d="M400,650c102.51,0,190.6-61.71,229.18-150H170.82C209.4,588.29,297.49,650,400,650z M400,150
				c-102.51,0-190.6,61.71-229.18,150h458.36C590.6,211.71,502.51,150,400,150z"/>
		</g>
	</g>
</g>
<g id="stroke">
	<g>
		<g>
			<path class="st2" d="M400,140c-143.59,0-260,116.41-260,260s116.41,260,260,260s260-116.41,260-260S543.59,140,400,140z M400,160
				c92.9,0,173.46,52.79,213.35,130H186.65C226.54,212.79,307.1,160,400,160z M177.46,310h445.07c11.25,27.8,17.46,58.17,17.46,90
				s-6.21,62.2-17.46,90H177.46C166.21,462.2,160,431.83,160,400S166.21,337.8,177.46,310z M400,640
				c-92.9,0-173.46-52.79-213.35-130h426.71C573.46,587.21,492.9,640,400,640z"/>
		</g>
	</g>
</g>
</svg>

----------------------- 以下是精选回复-----------------------

答:兼容性都不咋地

1
<embed src="1.svg" type="image/svg+xml">
e = $('embed').getSVGDocument()
e.querySelector('style').innerHTML += '.st0 {fill: #000000!important;}'

2
<iframe src="1.svg"></iframe>
i = $('iframe').contentDocument
i.querySelector('style').innerHTML += '.st0 {fill: #000000!important;}'

3 <img src="1.svg" class="filter-green" style="filter: invert(46%) sepia(91%) saturate(7481%) hue-rotate(352deg) brightness(102%) contrast(133%);"/>

4
fetch("./1.svg")
.then(response => {
..return response.text()
})
.then(text => {
..const parser = new DOMParser();
..const html = parser.parseFromString(text, "text/html");
..const svg = html.documentElement.querySelector("svg");
..document.body.appendChild(svg);
})
答:没办法改 能跟生成 svg 文件的人商量就 svg 文件里面加颜色 不然就找个加载图标替换 svg 内容 然后延迟加载把 svg 用 js 下载下来插入到 HTML 文档中 就像你说的第四个
答:设法暴露 <svg> 节点。直接插入 svg 文档也行,用 <use> 引用也行。
答:结果我直接把 svg 作为 txt 导入然后 append 进去了

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 载入外部的 svg 图形,怎么改变其颜色?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情