Sobre la base de lo que escribió Finesse, aquí hay una forma más sencilla de apuntar al svg y cambiar su gradiente.
Esto es lo que necesitas hacer:
- Asigne clases a cada parada de color definida en el elemento de degradado.
- Apunte al css y cambie el color de parada para cada una de esas paradas usando clases simples.
- ¡Ganar!
Algunos de los beneficios de usar clases en lugar de :nth-child
es que no se verá afectado si reordena sus paradas. Además, deja en claro la intención de cada clase: se quedará preguntándose si necesitaba un color azul en el primer niño o en el segundo.
Lo he probado en todos los Chrome, Firefox e 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>
Vea un ejemplo editable aquí:
https://jsbin.com/gabuvisuhe/edit?html,css,output
fill
de esta manera:fill: url(../js/gradient.svg#MyGradient);
. ¿Es este el camino correcto?