En s'appuyant sur ce que Finesse a écrit, voici une manière plus simple de cibler le svg et de modifier son gradient.
C'est ce que vous devez faire :
- Attribuez des classes à chaque arrêt de couleur défini dans l'élément de gradient.
- Ciblez le css et changez la couleur d'arrêt pour chacun de ces arrêts en utilisant des classes simples.
- Gagnez !
Certains avantages de l'utilisation de classes au lieu de :nth-child
est qu'il ne sera pas affecté si vous réorganisez vos arrêts. De plus, l'intention de chaque classe est claire - vous ne vous demanderez pas si vous aviez besoin d'une couleur bleue sur le premier ou le deuxième enfant.
Je l'ai testé sur tous les Chrome, Firefox et 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>
Voir un exemple modifiable ici : https://jsbin.com/gabuvisuhe/edit?html,css,output