【问题标题】:Using CSS to insert and color an SVG from a spritesheet使用 CSS 从 spritesheet 插入和着色 SVG
【发布时间】:2017-04-05 13:50:29
【问题描述】:

我正在使用svg-sprite 生成要通过<use> 方法嵌入的SVG spritesheet:

<svg class="icon">
  <use xlink:href="/assets/icons.svg#phone"/>
</svg>

这非常适合通过 HTML 标记嵌入和设置图标样式。

但是,我还需要完全通过 CSS 嵌入图标的选项。例如,通过 CMS 所见即所得编辑器添加内容列表不应要求内容编辑器添加额外的 SVG 元素。

例如:

<ul class="icon-list">
  <li>Item 1</li>
  <li>Item 2</li>
</ul>

.icon-list li::before { /* icon here */ }

有没有办法使用&lt;use&gt; embed 方法或类似方法来实现这一点?该解决方案还需要允许通过 CSS 为 SVG 着色。

【问题讨论】:

    标签: css svg svg-sprite


    【解决方案1】:

    如果我正确理解您的问题,基本答案是否定的。

    您可以在 CSS 中包含 SVG 图标,就像您可以添加位图图标一样。例如background-image。但是由于浏览器隐私限制,它必须是自包含的。它不能用&lt;use&gt; 引用外部SVG 元素。或者实际上是任何外部对象 - 例如其他图像、字体等。

    它也不能使用外部 CSS 设置样式。因此,例如,如果您需要同一图标的不同颜色变体,则需要为每种颜色创建单独的 SVG。

    【讨论】:

    • 谢谢,很遗憾您的回答与我目前的研究结果相符。我还没有发现其他人真正认识到这个问题。我想知道这是否是对用 SVG 图标替换图标字体的普遍推动的疏忽,还是我对如何使用图标的理解存在缺陷?
    • 没有什么能阻止您像使用位图精灵表一样使用 SVG 文件。 IE。与background-imagebackground-position。此页面也可能会有所帮助:betravis.github.io/icon-methods/svg-sprite-sheets.html
    • 这是真的 Paul,但您无法使用该方法为图标填充颜色。
    • 是的。但至少您可以在一个文件中包含所有变体。
    猜你喜欢
    • 2012-11-10
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2019-10-05
    • 2018-08-03
    • 1970-01-01
    • 2018-05-27
    相关资源
    最近更新 更多