HTMLのsvgタグにuseを使うとローカル環境でSVG画像が表示されない
SVG画像を読み込む方法はいくつかある
サンプルSVGファイル
code:icon.svg
<svg viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="100" r="100"/>
</svg>
code:icon-with-id.svg
<svg id="my-icon" viewBox="0 0 200 200" xmlns="http://www.w3.org/2000/svg">
<circle cx="100" cy="100" r="100"/>
</svg>
① imgタグ
code:sample.html
<img src="./icon.svg">
② objectタグ
code:sample.html
<object data="./icon.svg" />
③ svgタグとimageタグ
code:sample.html
<svg>
<image href="./icon.svg">
</svg>
④ svgタグとuseタグ
code:sample.html
<svg>
<use href="./icon.svg#my-icon">
</svg>
上記のうち、④ svgタグとuseタグの組み合わせを使う時、ローカル環境のブラウザでSVGファイルが表示されなかった
コンソールを見てもエラーは起きていない
Chrome Developer ToolsのNetworkタブを見ると、(blocked:origin)というエラーが起きている
https://gyazo.com/2621faac20516d0fae9eb78da2d744af
svgタグとuseタグの組み合わせを含むHTMLファイルをローカル環境で開くと、CORSの影響を受ける
CORSの制約を受けずにHTMLファイルを開くには、Safariのデベロッパーツールを使うのが一番楽だった
「クロスオリジンの制限を無効にする」にチェックを入れると、CORS制約を無視できる
このままブラウジングを続けるのは危険なので、動作チェックが終わったら必ずチェックを外す
https://gyazo.com/17eb6c1a9927c843cdf7edde59b1d423