Понятие линейных градиентов в SVG

Понятие линейных градиентов в SVG

От автора: CSS градиенты уже стали обычным делом для большинства веб-дизайнеров, в то время как у SVG градиентов есть свои преимущества. Если вы собираетесь использовать SVG элементы, вам нужно понять принцип работы градиентов.

Почти родственники

Градиенты в CSS и SVG, по существу, являются родственниками. Последняя спецификация CSS взяла некоторые хорошие идеи из спецификации SVG. Основная разница в том, что SVG, как и все другое в языках программирования, представляет градиент в виде разметки. Это делает градиенты в SVG более подробными, но также и более легкими для чтения и понимания. В SVG линейный градиент (градиент, который меняет свой цвет по прямой линии) можно создать с помощью кода:

По умолчанию такой градиент не видно. Для его отображения мы должны создать SVG документ с элементом, который будет ссылаться на градиент через его id. Градиент обычно помещают в секцию <defs>:

На данном этапе стоит отметить пару вещей:

По умолчанию градиенты идут слева направо, но это можно легко изменить. Ниже я покажу, как это сделать.

Элементы stop работают по принципу ограничителей градиента в Photoshop и других продуктах от Adobe.

Позиция смещения offset записывается от 0 до 1 или от 0% до 100% и указывает точку выхода цветов.

Цвета градиентов можно задавать через любую систему цветов в CSS.

fill также можно записать в чистом CSS. Разметка прямоугольника в таком случае изменится на:

И CSS:

Я предпочту использовать метод на CSS, так как он более гибкий, но вы можете выбрать и SVG.

Четкие переходы

Градиент – это не обязательно плавный переход от одного цвета к другому. Если ограничители пододвинуть друг к другу достаточно близко, можно создать четкий переход:

Прозрачность

С другой стороны, мы можем создать компоненты цвета с определенным уровнем прозрачности при помощи атрибута stop-opacity:

Использование CSS цветов с альфа компонентом для значений color-stop не даст того же эффекта в SVG.

Направленность

В отличие от углов в CSS, SVG градиент задает точки x1, y1, x2, и y2 для постановки направления линейного градиента. Точки точно такие же, как в SVG линиях.

Обратите внимание на то, что не всем атрибутам нужны значения для создания градиента, так как по умолчанию они уже заданы в 0 кроме точки x2, которая по умолчанию имеет значение 100%. Так мы получаем линейный SVG градиент с направлением слева направо. Поэтому чтобы создать диагональный градиент, необходимо точке y2 задать 100%:

Так мы не получим градиент с наклоном в 45°, так как значения относительны размерам элемента и не имеют абсолютного позиционирования:

Конусные и сетчатые градиенты?

Как и в CSS, SVG на данный момент поддерживает только линейные и радиальные градиенты. Тем не менее, конусные градиенты (градиенты по дуге) были предложены для внесения в CSS, а сетчатые (градиенты в двумерных сетках с цветами, выходящими из каждой точки) запланированы в SVG2. У Ли Вероу есть замечательный полифил конусного градиента для CSS, который с помощью canvas и SVG генерирует нужную форму и цвет.

Другие способы

В SVG можно создавать повторяющиеся и отраженные градиенты. О них я расскажу в отдельных статьях, то же самое касается и радиальных градиентов (они будут темой следующей статьи).

Преимущества и заключение

У SVG градиентов есть несколько преимуществ. Все они относятся к анимации. CSS градиенты должны поддаваться анимации, но только пара браузеров поддерживают эту функцию на данный момент. SVG градиенты можно анимировать, как с помощью SMIL (кроме IE/Edge, которые никогда не поддерживали SMIL), так и JS. Кроме того, при создании SVG намного легче работать с SVG градиентами.

Источник: //thenewcode.com/

Редакция: Команда webformyself.

Метки:

Похожие статьи:

Комментарии Вконтакте: