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


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

我們可以在全局文件global.d.ts內,添加圖片類型的聲明:

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

聲明之后,引用不報錯了。然后我們看看svg圖片,里面有顏色及其它設置:

 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后高亮

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

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

react-inlinesvg

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

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

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

添加引用: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   }

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM