SVGを操作するためのCSSプロパティまとめ

SVGの操作をするとき、普段はあまり使わない(見慣れない)CSSプロパティを使うことになるので、操作しようとする度に忘れてしまいます。
今回は自分の備忘録も兼ねて、SVGを操作するためのCSSプロパティをまとめました。
塗りの指定
fill:塗りの色を指定
fillを使うとSVGの塗りを指定できます。
ただし、SVG自体にfillが指定されていると、CSSで上書きができなくなってしまうので、反映されない場合はSVGのコード内を見て確認するようにしましょう。
他にも、:hoverなどの疑似クラスや、CSSアニメーションで値を変えていくことも可能です。
See the Pen XWrRwaW by Masakazu Saito (@31mskz10) on CodePen.
また、「塗り」であるため、短形や円形だと指定できますが、ラインなどには指定しても反映されないので注意が必要です。
fill-opacity:塗りの透明度を指定
fill-opacityでは塗りの透明度を指定できます。
See the Pen SVG:fill-opacity by Masakazu Saito (@31mskz10) on CodePen.
通常のopacityだと指定した要素全体に加えて、子要素も全て透明になってしまいますが、fill-opacityでは塗りだけが変わります。
アウトラインの指定
stroke:アウトラインの色を指定
fillが塗りなのに対して、strokeはアウトラインの色を設定します。
See the Pen SVG:stroke by Masakazu Saito (@31mskz10) on CodePen.
stroke-opacity:アウトラインの透明度を指定
fill-opacityと同様に、stroke-opacityでアウトラインの透明度指定も可能です。
See the Pen SVG:stroke-opacity by Masakazu Saito (@31mskz10) on CodePen.
stroke-width:アウトラインの太さを指定
stroke-widthではアウトラインの太さを指定できます。
単位なしでも表示され、「px」「em」「%」などひと通りの単位は使えます。
See the Pen SVG:stroke-width by Masakazu Saito (@31mskz10) on CodePen.
あまり太くしすぎると、viewBoxからはみ出して見切れてしまうので注意が必要です。
stroke-dasharray:アウトラインを破線にする
stroke-dasharrayを使うと、アウトラインを点線や破線にできます。
点線の長さと間隔の長さをコンマまたはスペースで区切ることで、設定できます。
See the Pen SVG:stroke-dasharray by Masakazu Saito (@31mskz10) on CodePen.
stroke-dashoffset:パスの最初の位置を指定
stroke-dashoffsetを使うと、アウトラインパスの最初の位置を指定できます。
破線の位置を調整するのにも使用したりしますが、CSSアニメーションでstroke-dashoffset: 0;に向かってアニメーションするように指定すると、パスをその方向から動かすことができます。
See the Pen SVG:stroke-dashoffset by Masakazu Saito (@31mskz10) on CodePen.
stroke-linecap:線の端の設定
stroke-linecapを使うと、線端の設定ができます。
設定できる値は下記の通りです。
| 値 | 形 |
|---|---|
| butt | 端が線の長さと等しくて平ら(デフォルト) |
| round | 端が丸くなる |
| square | 端が四角くなる(線の長さより長くなる) |
See the Pen SVG:stroke-linecap by Masakazu Saito (@31mskz10) on CodePen.

Vue Routerでページ遷移後にトーストを表示させる方法
Visual Studio Codeでできる最低限のGit操作方法
.htaccessを使って、httpからhttpsへリダイレクトする設定方法
コーディングで「スペース」と「タブ」のどちらを使えばいいのか?
gitignoreで特定ファイルをGitで無視する方法
resizeイベントを使用する場合は、iOS Safariでの挙動に注意
スクロール時に表示領域に画面がくっつくようになる処理をCSSだけで実現する「scroll-snap」
MacVim-Kaoriyaのインストール方法
WordPressのカスタムメニューでは、内部リンクに対してカスタムリンクは使わない!
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Macでアプリごとに音量を調節できるアプリ「Background Music」
Macのターミナルでパスワード付きのZIPファイルを作成する方法
MacBook Proでディスプレイのサイズ調整をして作業スペースを広げる
SteerMouseの「自動移動」機能で保存ダイアログが表示されたら自動でデフォルトボタンへカーソルを移動させる
iPhoneでタッチが一切効かなくなった場合に強制再起動する方法