Gradienty SVG — liniowe


Gradienty SVG

Gradient to płynne przejście od jednego koloru do drugiego. Ponadto do tego samego elementu można zastosować kilka przejść kolorystycznych.

W SVG istnieją dwa główne typy gradientów:

  • Liniowy
  • Promieniowy

Gradient liniowy SVG — <linearGradient>

Element <linearGradient> służy do definiowania gradientu liniowego.

Element <linearGradient> musi być zagnieżdżony w znaczniku <defs>. Znacznik <defs> jest skrótem od definicji i zawiera definicję elementów specjalnych (takich jak gradienty).

Gradienty liniowe można zdefiniować jako gradienty poziome, pionowe lub kątowe:

  • Gradienty poziome są tworzone, gdy y1 i y2 są równe, a x1 i x2 się różnią
  • Gradienty pionowe są tworzone, gdy x1 i x2 są równe, a y1 i y2 się różnią
  • Gradienty kątowe są tworzone, gdy x1 i x2 różnią się, a y1 i y2 się różnią

Przykład 1

Zdefiniuj elipsę z poziomym liniowym gradientem od żółtego do czerwonego:

Sorry, your browser does not support inline SVG.

Oto kod SVG:

Przykład

<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>

Wyjaśnienie kodu:

  • Atrybut id znacznika <linearGradient> definiuje unikalną nazwę gradientu
  • Atrybuty x1, x2, y1,y2 znacznika <linearGradient> definiują pozycję początkową i końcową gradientu
  • Zakres kolorów gradientu może składać się z dwóch lub więcej kolorów. Każdy kolor jest określony znacznikiem <stop>. Atrybut offset służy do określenia, gdzie zaczyna się i kończy kolor gradientu
  • Atrybut fill łączy element elipsy z gradientem


Przykład 2

Zdefiniuj elipsę z pionowym gradientem liniowym od żółtego do czerwonego:

Sorry, your browser does not support inline SVG.

Oto kod SVG:

Przykład

<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>

Przykład 3

Zdefiniuj elipsę z poziomym liniowym gradientem od żółtego do czerwonego i dodaj tekst wewnątrz elipsy:

SVG Sorry, your browser does not support inline SVG.

Oto kod SVG:

Przykład

<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>

Wyjaśnienie kodu:

  • Element <text> służy do dodawania tekstu