【发布时间】:2013-04-09 04:09:42
【问题描述】:
我一直在尝试寻找一种解决方案来处理通过 CSS 用作背景图像的 SVG 元素:
.icon.arrow-down
{
background-image: url( 'images/spritesheet.svg#arrow-down' );
}
我在 SVG 文件中直接使用:target,以便在组合的 SVG spritesheet 中定位特定层(或“组”)。
<?xml version="1.0" encoding="utf-8" ?>
<svg class="icon" id="icon" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="50px" height="50px" viewBox="0 0 50 50">
<defs>
<style>
rect, line { shape-rendering: crispEdges; }
svg .icon { display: none; }
svg .icon:target { display: inline; }
</style>
</defs>
<!-- Arrows -->
<g class="icon" id="arrow-down" transform="translate(0,12.5)">
<path fill="#F00" d="M 0,0 50,0 25,25 z" />
</g>
<g class="icon" id="arrow-up" transform="translate(0,12.5)">
<path fill="#F00" d="M 0,25 50,25 25,0 z" />
</g>
...
</svg>
这适用于 Firefox 和 IE9+,但在 Chrome 中它似乎忽略了#profile 部分。但是,直接在浏览器中使用目标 ID 转到 SVG 表,会生成正确的图像。
这是 Chrome 处理背景图片中 :target 的方式中的错误吗?
我试图避免将所有内容都分离到自己的文件中,因此只下载了一个资源,但我不知道这是否可能。
注意这些图标在 Chrome 中没有显示,但在其他浏览器中显示:http://jsfiddle.net/sYL5F/1/
【问题讨论】:
-
SVG 幻灯片?似乎对我有用的是我给的答案stackoverflow.com/a/64743597/4220241
标签: css google-chrome svg webkit background-image