有啥方法可以从 CSS 中使用 SVG Sprite?

Posted

技术标签:

【中文标题】有啥方法可以从 CSS 中使用 SVG Sprite?【英文标题】:Any way to use SVG Sprite from CSS?有什么方法可以从 CSS 中使用 SVG Sprite? 【发布时间】:2021-11-13 12:30:30 【问题描述】:

html

<svg>
    <use xlink:href="/assets/images/icons-sprite.svg#icon-name"></use>
</svg>

SVG 精灵:

<svg   class="hidden">
    <symbol xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="icon-name">
        <path ... fill="currentColor"></path>
    </symbol>
</svg>

有没有办法从 CSS 中使用 SVG sprite

这样

<div class=“icon”></div>

.icon 
background-image: “/assets/images/icons-sprite.svg#icon-name”
height: 30px


【问题讨论】:

没有。符号只能通过使用标签呈现,背景图片不是使用标签。 【参考方案1】:

我正在使用此处描述的包含 SVG 的技术,您可以创建一个看起来像这样的文档……

<svg xmlns="http://www.w3.org/2000/svg">

    <symbol id="arrow-left" viewBox="0 0 10 16">
        <path d="M9.4 1.4L8 0 0 8l8 8 1.4-1.4L2.8 8z"/>
    </symbol>

    <symbol id="arrow-right" viewBox="0 0 10 16">
        <path d="M0 14.6L1.4 16l8-8-8-8L0 1.4 6.6 8z"/>
    </symbol>

</svg>

将它包含在 HTML 的顶部,然后像这样在标记中插入 SVG 图标……

<svg class="arrow-right">
  <use xlink:href="#arrow-right" />
</svg>

这很简单,效果很好。但是,我尝试在我的 CSS 伪类中使用相同的图标 :before 和 :after 使用空的内容属性和背景中的 SVG。像这样的……

.title:after 
    float: right;
    width: 16px;
    height: 10px;
    content: "";
    background: url('#arrow-right');

【讨论】:

以上是关于有啥方法可以从 CSS 中使用 SVG Sprite?的主要内容,如果未能解决你的问题,请参考以下文章

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

Fabric.js:有啥方法可以在 JSON.stringify(canvas) 生成的 Json 中保存 url 而不是 svg 图像的路径?

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

SVG 与 HTML5 的 canvas 各有啥优点,哪个更有前途

是否可以使用 CSS 缩放内联 SVG? [复制]