Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用CSS更改SVG精灵表精灵的颜色_Css_Colors_Svg - Fatal编程技术网

使用CSS更改SVG精灵表精灵的颜色

使用CSS更改SVG精灵表精灵的颜色,css,colors,svg,Css,Colors,Svg,我正在使用SVG spritesheet作为图标。我想在:hover/:active上更改颜色。改变SVG颜色的唯一方法(我发现)是如果SVG数据是内联的。有一个很好的脚本可以将外部.svg转换为内联svg代码: 但是我不认为它可以用于精灵表,因为页面上的每个精灵都会被注入整个精灵表的路径,而不仅仅是特定精灵需要显示的1 是否有一种方法可以基于类(或其他内容)提取精灵表xml的特定部分(精灵)以放入HTML标记中?我唯一的想法是手动分解精灵表,将每个精灵路径字符串放入一个数组/对象中,并使用j

我正在使用SVG spritesheet作为图标。我想在:hover/:active上更改颜色。改变SVG颜色的唯一方法(我发现)是如果SVG数据是内联的。有一个很好的脚本可以将外部.svg转换为内联svg代码:

但是我不认为它可以用于精灵表,因为页面上的每个精灵都会被注入整个精灵表的路径,而不仅仅是特定精灵需要显示的1


是否有一种方法可以基于类(或其他内容)提取精灵表xml的特定部分(精灵)以放入HTML标记中?我唯一的想法是手动分解精灵表,将每个精灵路径字符串放入一个数组/对象中,并使用js(可能是Raphael)编写内联标记并设置悬停颜色;但我不确定这会增加什么样的开销,或者这是否是一种真正复杂的方式来做一些不应该做的事情。

一个想法是将精灵表内联,给出所有不同的精灵ID,并使用
引用它们,如下所示:

<html>
  <head>
    <title></title>
    <style type="text/css">
      #firstUseOfSprite1:hover{
        color:green;
      }
      #secondUseOfSprite1:hover{
        color:blue;
      }
      #sprite1{
        fill:currentColor;
        stroke:red;
        stroke-width:5px;
      }
      #defs{
        display:none;
      }</style>
  </head>
  <body>
    <!-- This is our "spritesheet" -->
    <svg id="defs">
      <defs>
        <rect width="50" height="20" id="sprite1"/>
        <circle r="20" id="sprite2"/>
      </defs>
    </svg>
    <p>Here we use the "sprite":</p>
    <div>
      <svg width="55" height="25">
        <use xlink:href="#sprite1" id="firstUseOfSprite1" x="2.5" y="2.5"></use>
      </svg>
    </div>
    <p>And here, we use it again:</p>
    <div>
      <svg width="55" height="25">
        <use xlink:href="#sprite1" id="secondUseOfSprite1" x="2.5" y="2.5"></use>
      </svg>
    </div>
  </body>
</html>

#Prite1的首次使用:悬停{
颜色:绿色;
}
#Prite1的第二个用途:悬停{
颜色:蓝色;
}
#精灵1{
填充:当前颜色;
笔画:红色;
笔画宽度:5px;
}
#蔑视{
显示:无;
}
这里我们使用“精灵”:

在这里,我们再次使用它:

您甚至可以为同一精灵的不同用途应用不同的悬停效果。它在Firefox和Chrome上似乎运行良好,但在Opera上,悬停效果对我来说不起作用。我没有试过IE9