CSS 控制 SVG 顏色

在製作網站上面,很多時候 icon 都會使用 svg 檔案來顯示,好處就是就算是放大縮小也不需要擔心失真的問題。

通常拿到 svg 檔案時,在前端使用之前都會先進行一陣加工,像是移除空白的 group 標籤

不過最常用的就是,svg 檔案,顏色隨著 parent css 一起改變,這個時候可以將 fillstroke 改為 currentColor

如此一來顏色就會隨著 css color 一起改變了。

範例

<svg fill="none" viewBox="0 0 24 24" stroke="currentColor">
  <g fill="none" fill-rule="evenodd">
    <g transform="translate(-782 -998) translate(772 985) translate(10 13) translate(3 3)">
      <circle cx="9" cy="9" r="8.5" fill="currentColor" stroke="currentColor" />
      <circle cx="9" cy="9" r="4.5" fill="#FFF" />
    </g>
  </g>
</svg>

參考資料

https://www.zhangxinxu.com/wordpress/2014/07/svg-sprites-fill-color-currentcolor/