Основываясь на том, что написал Finesse, вот более простой способ настроить svg и изменить его градиент.
Вот что вам нужно сделать:
- Назначьте классы каждому ограничителю цвета, определенному в элементе градиента.
- Нацельтесь на css и измените цвет стопа для каждой из этих остановок, используя простые классы.
- Выиграть!
Некоторые преимущества использования классов вместо того :nth-child
, что это не повлияет, если вы измените порядок своих стопов. Кроме того, это проясняет цель каждого класса - вам останется только задуматься, нужен ли вам синий цвет для первого дочернего элемента или для второго.
Я тестировал его на всех Chrome, Firefox и IE11:
.main-stop {
stop-color: red;
}
.alt-stop {
stop-color: green;
}
<svg class="green" width="100" height="50" version="1.1" xmlns="http://www.w3.org/2000/svg">
<linearGradient id="gradient">
<stop class="main-stop" offset="0%" />
<stop class="alt-stop" offset="100%" />
</linearGradient>
<rect width="100" height="50" fill="url(#gradient)" />
</svg>
См. Редактируемый пример здесь:
https://jsbin.com/gabuvisuhe/edit?html,css,output
fill
следующим образом:fill: url(../js/gradient.svg#MyGradient);
. Это правильный путь?