Перейти к содержимому

Линейный градиент SVG

Описание градиентов SVG

Градиент представляет собой плавный переход от одного цвета к другому. К одному элементу можно применить несколько цветовых переходов.

В SVG существуют два основных вида градиентов:

  • линейный
  • радиальный

Элемент <linearGradient>

Элемент <linearGradient> определяет линейные градиенты для заливки графических элементов. Он должен находиться внутри тега <defs>, который содержит определения конкретных элементов, таких как градиенты.

Линейные градиенты могут быть горизонтальными, вертикальными или угловыми:

  • Горизонтальные градиенты — y1 и y2 равны, а x1 и x2 различаются.
  • Вертикальные градиенты — x1 и x2 равны, а y1 и y2 различаются.
  • Угловые градиенты — x1 и x2 различаются, а также y1 и y2.

DANGER

Не путайте линейный градиент SVG с CSS-свойством radial-gradient. Градиенты CSS применяются к HTML-элементам, а градиенты SVG — к элементам SVG.

Пример элемента <linearGradient> для создания эллипса с горизонтальным линейным градиентом:

Пример элемента <linearGradient> для создания эллипса с горизонтальным линейным градиентом

html
<!DOCTYPE html>
<html>
  <body>
    <svg height="200" width="300">
      <defs>
        <linearGradient id="ellipse" x1="0%" y1="0%" x2="100%" y2="0%">
          <stop offset="0%" style="stop-color:rgb(28, 135, 201);stop-opacity:1" />
          <stop offset="100%" style="stop-color:rgb(128, 0, 128);stop-opacity:1" />
        </linearGradient>
      </defs>
      <ellipse cx="150" cy="90" rx="105" ry="65" fill="url(#ellipse)" />
    </svg>
  </body>
</html>

Пример элемента <linearGradient> для создания эллипса с вертикальным линейным градиентом:

Пример элемента <linearGradient> для создания эллипса с вертикальным линейным градиентом

html
<!DOCTYPE html>
<html>
  <body>
    <svg height="300" width="400">
      <defs>
        <linearGradient id="ellipse" x1="0%" y1="0%" x2="0%" y2="100%">
          <stop offset="0%" style="stop-color:rgb(28, 135, 201);stop-opacity:1" />
          <stop offset="100%" style="stop-color:rgb(128, 0, 128);stop-opacity:1" />
        </linearGradient>
      </defs>
      <ellipse cx="250" cy="100" rx="110" ry="70" fill="url(#ellipse)" />
    </svg>
  </body>
</html>

Атрибуты

ЗначениеОписание
gradientUnitsЭтот атрибут указывает систему координат для атрибутов x1, x2, y1, y2. Значения: userSpaceOnUse, objectBoundingBox.
gradientTransformЭтот атрибут добавляет дополнительное преобразование к системе координат градиента.
hrefЭтот атрибут указывает ссылку на другой элемент <linearGradient>.
spreadMethodЭтот атрибут указывает, как ведет себя градиент, если он начинается или заканчивается в пределах формы, содержащей градиент. Значения: pad, repeat, reflect.
x1Этот атрибут указывает координату x начальной точки векторного градиента, вдоль которого рисуется линейный градиент.
x2Этот атрибут указывает координату x конечной точки векторного градиента, вдоль которого рисуется линейный градиент.
y1Этот атрибут указывает координату y начальной точки векторного градиента, вдоль которого рисуется линейный градиент.
y2Этот атрибут указывает координату y конечной точки векторного градиента, вдоль которого рисуется линейный градиент.

Элемент SVG <linearGradient> также поддерживает Глобальные атрибуты и Атрибуты событий.

Практика

Для чего используются атрибуты 'x1', 'y1', 'x2' и 'y2' в линейном градиенте SVG в HTML?

Считаете ли это полезным?

Предпросмотр dual-run — сравните с маршрутами Symfony на продакшене.