css – SVG“fill:url(#…)”在Firefox中表现奇怪

前端之家收集整理的这篇文章主要介绍了css – SVG“fill:url(#…)”在Firefox中表现奇怪前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下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,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,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); stop-opacity:.4"/>
      <stop offset="100%" style="stop-color:rgb(0,0); stop-opacity:1"/>
    </linearGradient>
  </defs>

  <text x="8" y="25" style="font-size: 29px;" font-family="Arial">hello world</text>
</svg>'

我通过CSS设置文本元素的fill属性,并根据悬停状态在各种渐变之间进行切换。这在Chrome& Safari,但在Firefox中,文本不显示。检查元素后,我发现Firefox正在追加我的填充结尾:url(#…)CSS属性。我尝试使用Firebug删除none关键字,但Firebug只是删除整个属性。为什么会发生这种情况?

编辑:
我应该注意,如果我删除设置填充属性的CSS,并将fill属性硬编码到文本元素(而不是内联样式属性)中,则文本会在所有浏览器中正常显示

解决方法

弄清楚了。在我的CSS中,我以同样的方式指向渐变,我最初引用了内联:
#myselector {
    fill: url('#gradient-id');
}

要使其在Firefox中工作,我不得不将其更改为:

#myselector {
    fill: url('/#gradient-id');
}

不知道为什么会这样。也许它与包含我的样式表的目录结构有关系?

猜你在找的CSS相关文章