SVG画像の色を変更する方法

Scalable Vector Graphics(SVG)は、ベクトル形式でイラストレーションやアイコンを表現するためのXMLベースのフォーマットです。SVG画像の色を変更することは、ウェブデザインやグラフィックスにおいて一般的な要望です。本記事では、SVG画像の色を変更するための4つの異なる方法を紹介します。

スポンサーリンク

直接SVGコードを変更する

SVGファイルのコードを開いて、各要素のfillやstroke属性を変更することで、色を変更できます。以下は円を赤色に変更する例です。

<circle cx="50" cy="50" r="40" fill="red" />

CSSを使用する

SVGに対してCSSを使用してスタイルを適用することもできます。以下は、SVGファイル内でCSSを使用してスタイルを指定する例です。

<style>
  <![CDATA[
    circle {
      fill: blue;
    }
  ]]>
</style>

外部CSSファイルを使用する

外部のCSSファイルを作成し、SVGファイルからそのスタイルを参照することもできます。

<link rel="stylesheet" type="text/css" href="styles.css" />

そして、styles.css ファイル内でスタイルを指定します。

circle {
  fill: green;
}

JavaScriptを使用する

JavaScriptを使ってSVG要素のスタイルを動的に変更することもできます。

document.getElementById("myCircle").style.fill = "purple";

よくある質問(FAQ)

Q. SVGのfill色をCSSで変更するには?
A. インラインSVGではfill属性を削除してCSS fill: colorで設定します。currentColorを使うと親のcolorプロパティの値が継承されます。imgタグ経由では直接変更できません。
Q. SVG画像をCSSのfilterプロパティで色変更するには?
A. imgやbackground-imageのSVGにはfilter: hue-rotate()・brightness()・invert()等の組み合わせで色を変えられます。特定の色への変換はフィルター値の計算が複雑です。
Q. SVGスプライトを使ってアイコンの色をCSSで管理するには?
A. SVGスプライトのシンボルにfill: currentColorを設定し、useタグで呼び出してcssでcolorを指定します。ホバー時の色変化などをCSSで管理できる便利な手法です。

まとめ

これらの方法は、それぞれの状況によって選択するべきです。SVGコードの直接変更はシンプルで直感的ですが、CSSを使用すると外部スタイルの再利用が可能です。JavaScriptは動的な変更が可能であるが、必要な場合に限定して使用するのが一般的です。色を変更する手法を使い分けて、より柔軟でメンテナンスしやすいSVG画像を作成しましょう。