LoginSignup
4
1

More than 3 years have passed since last update.

SVGをSymbolで再利用したときに、linearGradientが効かないとき

Posted at

SVGのSymbolを利用するとページ内で再利用する事ができるので便利なのですが、Symbol化した要素にlinearGradientを掛けたときに上手く適用されない事がありました。

調べてみた所、Symbol化しているsvgタグはdisplay:none;にしてはダメというコトだったみたいです。

NGな例
<svg style="display: none;">
    <defs>
        <linearGradient id="gradient">
            <!-- グラデーションの指定 -->
        </linearGradient>
        <symbol id="symbol" viewBox="0 0 100 100">
            <g fill="url(#gradient)">
                <!-- 描画要素の指定 -->
            </g>
        </symbol>
    </defs>
</svg>

参考ページのように、visibility:hidden; width: 0; height: 0;の様なスタイルを掛けると正常に表示されました。

OKな例
<svg style="visibility:hidden; width: 0; height: 0;">
    <defs>
        <linearGradient id="gradient">
            <!-- グラデーションの指定 -->
        </linearGradient>
        <symbol id="symbol" viewBox="0 0 100 100">
            <g fill="url(#gradient)">
                <!-- 描画要素の指定 -->
            </g>
        </symbol>
    </defs>
</svg>

表示させたくないからと言って何でもかんでもdisplay: none;掛けちゃダメですね。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1