前端 引用svg圖片,支持動態切換顏色

當咱們添加一張svg圖片顯示時,react提示找不到文件。html

咱們能夠在全局文件global.d.ts內,添加圖片類型的聲明:react

詳見《TypeScript 引用資源文件後提示找不到的錯誤處理方案git

聲明以後,引用不報錯了。而後咱們看看svg圖片,裏面有顏色及其它設置:github

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
 3     <title>窗口_返回</title>
 4     <g id="控件" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
 5         <g id="窗口_返回">
 6             <rect id="Rectangle-6" fill="#D8D8D8" opacity="0" x="0" y="0" width="24" height="24"></rect>
 7             <path d="M8.35417135,12.9957726 C8.13320936,12.7345458 8,12.3967967 8,12.0279541 C8,11.6586058 8.13357489,11.3204363 8.3550807,11.0590615 L8.3521103,11.0564202 L14.356041,4.51971371 L14.3599873,4.52318728 C14.635253,4.20288524 15.0434555,4 15.4990737,4 C16.3280124,4 17,4.67157288 17,5.5 C17,5.8870199 16.8533375,6.23980607 16.6125263,6.50587693 L16.6210783,6.51340439 L11.5390798,12.0228281 L16.5124905,17.3935277 C16.8121157,17.6677653 17,18.0619548 17,18.5 C17,19.3284271 16.3280124,20 15.4990737,20 C15.0262153,20 14.6044287,19.7814702 14.3293154,19.439953 L8.35278214,12.9970098 L8.35417135,12.9957726 L8.35417135,12.9957726 Z" id="Oval-43-Copy-3" fill="#808080"></path>
 8         </g>
 9     </g>
10 </svg>

是否能夠根據一張svg,顯示不一樣的效果?好比hover後高亮npm

理論上添加xml代碼解析,而後將svg以組件形式添加渲染,是可行的。緩存

在網上逛了一圈,發現大多數都比較水,不少是經過加載全局的圖片,做爲單獨組件或者緩存來使用,不適用svg

react-inlinesvg

發現了一個比較不錯的開源,超級不錯,安利!post

https://github.com/gilbarbara/react-inlinesvgurl

安裝:npm i react-inlinesvg 或者 yarn add react-inlinesvgspa

添加引用:import SVG from 'react-inlinesvg';

添加圖片:

1.import BackPng from '../../../../assets/images/back.svg';
2.<SVG className="backIcon" src={BackPng} />
設置動態樣式:
 1   &:hover {
 2     path {
 3       fill: #4ecb78;
 4     }
 5     .backContent {
 6       color: #4ecb78;
 7     }
 8   }
 9   &:active {
10     path {
11       fill: #2baf57;
12     }
13     .backContent {
14       color: #2baf57;
15     }
16   }

 

相關文章
相關標籤/搜索