Линейный градиент в SVG
10 августа 2019
Шаг 1. Определение
В секцию defs добавляем тег линейного градиента linearGradient.<defs>
<linearGradient id="blue_gradient" x1="0" y1="0" x2="1" y2="0">
</linearGradient>
</defs>
У объекта linearGradient задаются следующие свойства:
- id – идентификатор градиента;
- x1 – координата точки 1 по оси X;
- y1 – координата точки 1 по оси Y;
- x2 – координата точки 2 по оси X;
- y2 – координата точки 2 по оси Y.
Точки 1 и 2 указывают вектор (направление) заливки градиента. Для горизонтальной заливки слева направо можно указать (0,0) и (1,0).
Шаг 2. Цвета заливки
Для указания цветов в объект linearGradient добавляем теги stop.В примере выполняется переход из в
<defs>
<linearGradient id="blue_gradient" x1="0" y1="0">
<stop offset="0%" stop-color="#4cbdca" />
<stop offset="80%" stop-color="#1a8da7" />
</linearGradient>
</defs>
Тег stop поддерживает следующие свойства:
- offset – расположение точки цвета относительно всего градиента (указывается в процентах или числом от 0 до 1);
- stop-color – цвет. Указывается способами как в CSS;
- stop-opacity – прозрачность (указывается в процентах или числом от 0 до 1).
Шаг 3. Применение
Для заливки элемента градиентом в свойстве fill указывается значение url(#blue_gradient), где blue_gradient это id ранее объявленного градиента.В примере иконка для кнопки реализована через элемент path
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="16" height="16" viewBox="0 0 16 16">
<defs>
<linearGradient id="blue_gradient" x1="0" y1="0">
<stop offset="0%" stop-color="#4cbdca" />
<stop offset="80%" stop-color="#1a8da7" />
</linearGradient>
</defs>
<g>
<path fill="url(#blue_gradient)" d="M15.331 2.502c-2.244-0.323-4.724-0.502-7.331-0.502s-5.087 0.179-7.331 0.502c-0.43 1.683-0.669 3.543-0.669 5.498s0.239 3.815 0.669 5.498c2.244 0.323 4.724 0.502 7.331 0.502s5.087-0.179 7.331-0.502c0.43-1.683 0.669-3.543 0.669-5.498s-0.239-3.815-0.669-5.498zM6 11v-6l5 3-5 3z"></path>
</g>
</svg>
Иконка без заливки
Иконка c градиентной заливкой