gpt4 book ai didi

css - 使用 CSS 更改 SVG spritesheet Sprite 的颜色

转载 作者:行者123 更新时间:2023-11-28 10:19:23 25 4
gpt4 key购买 nike

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

How to change color of SVG image using CSS (jQuery SVG image replacement)?

但我认为它不适用于 spritesheet,因为页面上的每个 sprite 都将注入(inject)整个 spritesheet 的路径,而不仅仅是特定 sprite 需要显示的 1。

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

最佳答案

一个想法是使 spritesheet 内联,给所有不同的 Sprite ID 并使用 <svg:use> 引用它们,像这样:

<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>

您甚至可以为同一 Sprite 的不同用途应用不同的悬停效果。它似乎适用于 Firefox 和 Chrome,但悬停效果对我来说不适用于 Opera。我没有尝试 IE9。

关于css - 使用 CSS 更改 SVG spritesheet Sprite 的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13502649/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com