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.

iTerm2で起動時に左上に表示される「Tip of the Day(今日のTip)」を非表示にする方法
WebPに対応して画像サイズを最適化する方法
WordPressのヘッダーにツールバーが表示されないときは、wp_headやwp_footerが入っているか確認
iOSシミュレーターを使ってWebサイトを開発者ツールを見ながら実機表示で開発する方法
ソースコードをハイライトする軽量ライブラリ「Highlight.js」の導入方法と使い方
ファビコンや各種アイコンの作成と設定方法
MacのRubyをrbenvで管理する方法
Facebookでシェアした記事の画像反映ができていない時の修正方法
効率的なマークアップが出来るようになるEmmetでCSSを書く時の基本
Visual Studio Codeで開始タグを修正すると自動で閉じタグも修正してくれる拡張機能「Auto Rename Tag」
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Bartender 6で追加されたWidgets機能で自作メニューバーアイテムを簡単に作成する
Googleカレンダーを便利に活用するための小技集(祝日だけを表示・月末の繰り返しイベントを追加)
Obsidianを使った「自己流PKM」で行う知識トレーニング
テキストエディタ・ノートアプリ関連のショートカットキーをKeyboard Maestroで統一する
Path Finderを使ってキーボードだけでファイル操作する方法(応用編)
macOSのコマンドパレット比較!SpotlightとAlfred、Raycastどれを使えばいい?
1つのノートアプリにすべて集約するのをやめた理由|2025年時点のノートアプリの使い分け
Notionログイン時の「マジックリンク」「ログインコード」をやめて普通のパスワードを使う
AlfredでNotion内の検索ができるようになるワークフロー「Notion Search」