封装
function _loadAndModifySvg(url,fillColor){
return fetch(url)
.then((response) => response.text())
.then((svgText) => {
// 创建一个 DOMParser 来解析 SVG
const parser = new DOMParser();
const svgDoc = parser.parseFromString(svgText, 'image/svg+xml');
const svgElement = svgDoc.querySelector('svg');
// 修改颜色
if(fillColor){
svgElement.querySelectorAll('[fill]').forEach((el) => {
//填充
if(el.getAttribute('fill')!=="none"){
el.setAttribute('fill', fillColor);
}
//边框
el.setAttribute('stroke', fillColor);
});
}
// 将 SVG 转换为字符串
const serializer = new XMLSerializer();
const modifiedSvg = serializer.serializeToString(svgElement);
// 转换为 Data URI
return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(modifiedSvg)}`;
});
}
使用
_loadAndModifySvg('地址','颜色')