私は次のSVGグラフィックを持っています:
<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>'
fill
CSSを使用して要素の属性を設定text
し、ホバー状態に応じてさまざまなグラデーションを切り替えます。これはChromeとSafariでうまく機能しますが、Firefoxではテキストが表示されません。要素を調べたところ、FirefoxがCSS属性none
の最後に追加されていることがわかりました。fill: url(#...)
Firebugでキーワードを削除しようとしましnone
たが、Firebugは属性全体を削除するだけです。なぜこうなった?
編集:fill
プロパティを設定するCSSを削除し、fill
属性をtext
要素にハードコードすると(インラインstyle
属性を介さずに)、テキストがすべてのブラウザーで正しく表示されること
に注意してください。