je le graphique SVG suivant:SVG "remplir: url (# ....)" comportement étrange dans Firefox
<svg width='36' height='30'>
<defs>
<linearGradient id="normal-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgb(81,82,84); stop-opacity:.4"/>
<stop offset="100%" style="stop-color:rgb(81,82,84); stop-opacity:1"/>
</linearGradient>
<linearGradient id="rollover-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgb(0,105,23); stop-opacity:.5"/>
<stop offset="100%" style="stop-color:rgb(0,105,23); stop-opacity:1"/>
</linearGradient>
<linearGradient id="active-gradient" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:rgb(0,0,0); stop-opacity:.4"/>
<stop offset="100%" style="stop-color:rgb(0,0,0); stop-opacity:1"/>
</linearGradient>
</defs>
<text x="8" y="25" style="font-size: 29px;" font-family="Arial">hello world</text>
</svg>'
I définir l'attribut fill
de l'élément text
par CSS et de basculer entre les différents gradients en fonction de l'état du vol stationnaire. Cela fonctionne très bien dans Chrome & Safari, mais dans Firefox, le texte ne s'affiche pas. Après avoir inspecté l'élément, j'ai découvert que Firefox ajoutait none
à la fin de mon attribut CSS fill: url(#...)
. J'ai essayé de supprimer le mot-clé none
avec Firebug, mais Firebug supprime simplement l'attribut entier. Pourquoi cela arrive-t-il?
EDIT: Je dois souligner que si je retire le CSS qui définit la propriété fill
et hardcode l'attribut fill
dans l'élément text
(et non par un attribut en ligne style
), le texte affiche correctement dans tous les navigateurs.
À quoi ressemble votre CSS actuel, pour aller avec ce SVG? Quant à la chose "none", "fill: url (any) none" est la même chose que "fill: url (whatever)"; tous les deux disent que si la chose à l'url n'est pas disponible il n'y a pas de repli et rien ne devrait être peint. –
@BorisZbarsky Merci, je ne savais pas que le 'none' spécifiait ce qu'il se passe quand la première ressource est introuvable. –