SVG ラインアニメーション

SVG 拡散

拡散は1つの色から別の色への滑らかな移行です。また、同じ要素に複数の色の移行を適用することもできます。

SVGには主に2種類の拡散があります:

  • 線形拡散
  • 放射拡散

SVG 線形拡散 - <linearGradient>

<linearGradient> 要素は線形拡散を定義するために使用されます。

<linearGradient> 要素は <defs> タグ内。<defs> 要素は定義(definitions)の省略形で、特殊要素(例えばフィルタ)の定義を含みます。

線形拡散は水平、垂直、または角度拡散として定義できます:

  • y1とy2が等しい場合、x1とx2が不相等な場合に水平拡散を作成します
  • x1とx2が等しい場合、y1とy2が不相等な場合に垂直拡散を作成します
  • x1とx2が異なる場合、y1とy2が不相等な場合に角度拡散を作成します

例 1

黄色から赤への水平線形拡散を定義する円を定義します:

これは SVG コードです:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad1" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad1)" />
</svg>

自分で試してみる

コード説明:

  • <linearGradient> タグの id 属性でグラデーションのユニークな名前を定義します
  • <linearGradient> タグの x1、x2、y1、y2 属性でグラデーションの開始位置と終了位置を定義します
  • グラデーションの色範囲は、2色以上の色で構成されます。各色は <stop> タグで指定されます
  • offset 属性でグラデーション色の開始位置と終了位置を定義します
  • fill 属性で円要素がグラデーションにリンクされます

例 2

以下は、黄色から赤への垂直線形グラデーションを持つ円を定義する方法です:

これは SVG コードです:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad2" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad2)" />
</svg>

自分で試してみる

例 3

以下は、黄色から赤への水平線形グラデーションを持つ円を定義し、円内にテキストを挿入する方法です:

SVG

これは SVG コードです:

<svg height="150" width="400">
  <defs>
    <linearGradient id="grad3" x1="0%" y1="0%" x2="100%" y2="0%">
      <stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1" />
      <stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
    </linearGradient>
  </defs>
  <ellipse cx="200" cy="70" rx="85" ry="55" fill="url(#grad3)" />
  <text fill="#ffffff" font-size="45" font-family="Verdana" x="150" y="86">
  SVG</text>
</svg>

自分で試してみる

コード説明:

  • <text>要素はテキストを追加するために使用されます