如何在CSS中使用SVG符号?

eny*_*nyo 18 css html5 svg

使用SVG格式的符号对我来说似乎是一个好主意,因此您只能加载一个SVG文件,并将其用作一种spritemap.

但是我感觉不对,直接将<svg></svg>标签包含在我的html图标中,因为它们只是演示文稿,应该添加到我的CSS中.

有没有办法:after在我的CSS 中的伪元素中添加svg中的符号?

bla*_*ing 5

您可以通过这种方式引用CSS中的片段(片段必须具有标识的ID):

.element {
background-image: url('vector.svg#fragment');
}
Run Code Online (Sandbox Code Playgroud)

您还可以通过使用viewBox剪切它来显示特定区域:

.element {
background-image: url('vector.svg#fragment(viewBox(0,0,25,25))');
}
Run Code Online (Sandbox Code Playgroud)

在这里,您可以阅读有关此方法的更多信息:http: //www.broken-links.com/2012/08/14/better-svg-sprites-with-fragment-identifiers/

另一种方法可能是以图标字体创建所有符号.

  • OP 正在谈论符号。这里显示的方法是使用 VIEWS。不同的技术。 (2认同)

Sun*_*ari -1

正如 Blazemonger 在评论中提到的,您可以将其放在元素content的内部after

但是,如果您将其设置为 a ,backgroundafter将可以更好地控制它的sizeposition以及背景图像可以具有的任何其他属性

html

<div id = "mydiv"><div>
Run Code Online (Sandbox Code Playgroud)

CSS

#mydiv{
    width:500px;
    height:100px;
    background:tomato;
}

#mydiv:after{
    content:"After of #mydiv";
    width:500px;
    height:100px;
    background:url('http://xn--dahlstrm-t4a.net/tmp/sharp-icons/svg-icon.svg') no-repeat;
    position:absolute;
    top:200px;
    border:solid 1px tomato;
}
Run Code Online (Sandbox Code Playgroud)

您可以将 svg 保存为单独的文件并将其提供urlbackground DEMO

在此处阅读有关将 SVG 添加到页面的方法的更多信息

  • 我知道。我想使用符号。 (7认同)
  • 我想使用符号,而不是整个 svg,因为我想将它用作“spritemap”。 (3认同)
  • 是的,但是您必须链接**整个** SVG,而不是链接可能构成OP提到的SVG文件一部分的单个符号或def。 (2认同)