将css背景图像设置为内联SVG符号?

Dre*_*TeK 31 html css icons svg css3

我知道外部svg文件可以链接到背景图像:

background-image: url(Icon.svg);
Run Code Online (Sandbox Code Playgroud)

和符号id可以从外部svg文件中定位:

background-image: url(Icons.svg#Icon-Menu);
Run Code Online (Sandbox Code Playgroud)

但是如何将背景图像设置为内联 svg符号?(如下)

我的svg位于我的网页正文的顶部而不是外部文件.

我希望.test背景图像成为#Icon-Menu符号.

.test{
  background:#ddd url('../#Icon-Menu');
  height:100px;
  width:100px;
  display:block;
}
Run Code Online (Sandbox Code Playgroud)
<div style="height: 0; width: 0; position: absolute; visibility: hidden;">
  <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <symbol id="Icon-Menu" viewBox="0 0 512 512">
      <title>Menu</title>
      <path d="M93.417,5.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V8.333	C96.417,6.679,95.071,5.333,93.417,5.333z" />
      <path d="M93.417,40.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V43.333	C96.417,41.679,95.071,40.333,93.417,40.333z" />
      <path d="M93.417,75.333H6.583c-1.654,0-3,1.346-3,3v13.334c0,1.654,1.346,3,3,3h86.833c1.654,0,3-1.346,3-3V78.333	C96.417,76.679,95.071,75.333,93.417,75.333z" />
    </symbol>
  </svg>
</div>

<div class="test"></div>
Run Code Online (Sandbox Code Playgroud)

Rob*_*son 5

图像必须是完整的文件。

SVG规范 ...

'image'元素表示要渲染完整文件的内容...

背景图像等也是如此。

  • @Majo0od 当它引用规范来说明原因时,“你不能这样做”是一个不完整的答案。如果更改标记,您可能可以通过某些方法实现看起来相似的效果,但无法显示 OP 所请求的符号。 (2认同)

Typ*_*yle 5

罗伯特·朗森

那就对了。但是您可以通过这种方式做到。但是符号不是它起作用的方式。不幸的是,您必须使用“ g”或类似的东西进行引用。

body {
  background: url(http://www.broken-links.com/tests/images/faces.svg#devil-view);
}
Run Code Online (Sandbox Code Playgroud)

http://codepen.io/Type-Style/pen/ByvKJq

如果svg位于标记中,则它将不起作用。

  • Codepen 链接已失效。 (4认同)
  • 这不是答案,而是评论。嗯,这是一个答案,但它是作为评论来表述的,这使得以这种格式阅读变得困难,这种格式是为了完整的答案,而不是评论 (2认同)