5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

imgタグで読み込んだsvgの色を変更する

Last updated at Posted at 2025-12-01

アドベントカレンダー初担当、嬉しいです!!
初回は 「imgタグで読み込んだsvgの色変更」 という、最近知った画期的な技術(?)について書いてみます。

svgの色を変える王道2パターン

svgは便利ですが、読み込み方によってできること/できないことが変わります。
まずは色変更がしやすい2つの方法から。

1. svgをインラインで読み込む

いつ使う:サイトロゴなど出現頻度が少ないとき
色変更fillstroke を直接書き換える

See the Pen Untitled by 小笠原怜 (@dkyyizoy-the-selector) on CodePen.

インライン化してしまえば、cssで色を自由に操作できます。
ただ、同じsvgを何度も使う場合は毎回インラインで書くのが面倒!

2. svgを擬似要素でmask-imageとして読み込む

いつ使う:よく使うアイコンなど
色変更background-color を指定

See the Pen Untitled by 小笠原怜 (@dkyyizoy-the-selector) on CodePen.

必ず特定の文字列とセットで使いたいアイコンなど、擬似要素で書いてしまえばhtmlが冗長にならずに済みます。
マスクとして読み込むので、塗りつぶす色は background-color で!

でもimgタグで外部svgを読み込む場合は…

外部svgファイルをimgタグで読み込む場合、以上の方法では色変更ができません。

<img src="/icon.svg">

インラインじゃないので fill にアクセスできず、マスクでもないから背景色で塗りつぶせない…。
そこで便利なのが、filter で色を変える方法です!

img {
    filter: brightness(0) saturate(100%) invert(100%) sepia(0%) saturate(0%) hue-rotate(199deg) brightness(105%) contrast(101%);;
}

彩度・明度・コントラストを操作して目的の色に近づけることができます!
svgが単色の時に限りますが、ホバーで色を変える程度なら十分使えます。

こんな感じ↓

See the Pen imgタグで読み込んだsvgの色を変える by 小笠原怜 (@dkyyizoy-the-selector) on CodePen.

filter とはなんぞやという感じですが、カラーコードを filter に変換してくれる超便利なサイトが存在します↓↓↓

この方法を使えば、外部svgでも簡単に色変更ができます!便利!

おわりに

imgタグで読み込む外部svgの「色変えられない問題」は、filter を使うことで解決できました!
svgは読み込み方によって色変更の方法が変わるので、最適な方法を選ぶのが大事ですね。

それではまた〜〜

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?