画像SVGをBase64にして使ってはいけない。今はそのまま直接埋め込むことができる
更新日
CSSに画像SVGをインラインで埋め込むときにBase64へ変換してる人向けの記事です。
検索サイトから「SVG CSS インライン」や「SVG CSS 直接埋め込む」などで調べると、上の方に来るサイトで紹介されているのが大体Base64に変換してから埋め込む方法。
この方法はIEでSVG表示する方法のためにあるが、IEはサポート終了したので今はもっと簡単に直接埋め込める方法がある。
古い
div {
background-image:url("data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjMwMCI+DQoJPGNpcmNsZSBjeD0iMTUwIiBjeT0iMTUwIiByPSI1MCIgZmlsbD0iIzAwOTlmZiIgc3Ryb2tlPSIjMDAyMmJiIiAvPg0KPC9zdmc+");
}
新しい
div {
background-image:url("data:image/svg+xml;utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="300" height="300"><circle cx="150" cy="150" r="50" fill="#0099ff" stroke="#0022bb" /></svg>");
}
base64にすると、元のデータの容量から約33%増加しますし、わかりにくいコードになってしまいますね。
新しい方法は直接埋め込むことができるので、もとのデータの容量で済み、直感的にSVGファイルで中身も大体わかりますね。
さらにカラーやSVG専用のCSSを後から追加することが簡単になるというメリットがある