167  
查询码:00000072
通过js动态更改SVG的颜色
作者: 陆敏 于 2022年02月28日 发布在分类 / 人防组 / 人防前端 下,并于 2022年02月28日 编辑

通过js 动态更改SVG的颜色

现在需要更改此图标的颜色

js代码:

// svg改变颜色
     getChangeColorSvgBase64( urlcolor) {
       //创建dom元素,先将svg加载到页面上
       var  object =  document. createElement( "object");
       object. setAttribute( "type""image/svg+xml");
       object. setAttribute( "data"url);
       //添加到body中
       document. body. appendChild( object);
       return  new  Promise(( resolvereject=> {
         //svg图片加载完成后触发
         object. onload =  function () {
           //这里获取svgDom
           var  objectSvg =  object. contentDocument;
           var  objectSvgPaths =  objectSvg. getElementsByTagName( "path");
           //修改颜色
           for ( var  p  of  objectSvgPaths) {
             p. setAttribute( "style"`fill: ${ color } `);
          }
           //将修改颜色后的svg图片转换为base64
           const  svg =  objectSvg. getElementsByTagName( "svg")[ 0];
           //将整个 document 对象序列化为一个 XML 字符串
           const  s =  new  XMLSerializer(). serializeToString( svg);
           //通过window.btoa() 方法用于创建一个 base-64 编码的字符串
           const  img =  `data:image/svg+xml;base64, ${ window. btoa( s) } `;
           //操作完成后删除dom元素
           object. remove();
           resolve( img);
        };
      });
    },
  },
使用方法:

let  mapSvgBase64 =  await  this. getChangeColorSvgBase64( require( "@/assets/images/map/project.svg"), 'pink');

更改成功




 推荐知识

 历史版本

修改日期 修改人 备注
2022-02-28 21:05:04[当前版本] 陆敏 创建版本

 附件

附件类型

PNGPNG

知识分享平台 -V 4.8.7 -wcp