Спираючись на те, що писав 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);
. Це правильний шлях?