【问题标题】:Use SVG image inline inside CSS :before pseudo-element在 CSS 中使用 SVG 图像内联:before 伪元素
【发布时间】:2018-08-07 04:09:29
【问题描述】:

我有一个简单的 SVG 图像:

<svg width="auto" height="10px" viewBox="0 0 80 20" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
    <path d="M0 0 H 20 L 10 20 Z" fill="yellow"></path>
    <path d="M30 20 H 50 L 40 0 Z" fill="black"></path>
    <path d="M60 0 H 80 L 70 20 Z" fill="yellow"></path>
</svg>

我没有将其作为图像包含在内,而是考虑将其内联到带有 SASS 的 ::before 伪元素中:

div:before {
  content: str-replace(url('data:image/svg+xml;charset=utf8,%3Csvg width='auto' height='10px' viewBox='0 0 80 20' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E%3Cpath d='M0 0 H 20 L 10 20 Z' fill='yellow'%3E%3C/path%3E%3Cpath d='M30 20 H 50 L 40 0 Z' fill='black'%3E%3C/path%3E%3Cpath d='M60 0 H 80 L 70 20 Z' fill='yellow'%3E%3C/path%3E%3C/svg%3E'), "#", "%23");
}

https://codepen.io/Deka87/pen/zRMmpr

但是,我在 Codepen 和我的本地编译器中都收到一条错误消息。任何帮助将不胜感激!

【问题讨论】:

    标签: html css svg sass


    【解决方案1】:

    试试这个:

    div::before {
     content: '';
     background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%22auto%22%20height%3D%2210%22%20viewBox%3D%220%200%2080%2020%22%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%3E%3Cpath%20d%3D%22M0%200h20L10%2020z%22%20fill%3D%22%23ff0%22/%3E%3Cpath%20d%3D%22M30%2020h20L40%200z%22/%3E%3Cpath%20d%3D%22M60%200h20L70%2020z%22%20fill%3D%22%23ff0%22/%3E%3C/svg%3E');
    }
    

    我使用http://www.grumpicon.com/这个网站将SVG转换为CSS背景

    【讨论】:

    • 是的!我一直在寻找这样的工具但失败了!
    • @sdvnksv 我使用jakearchibald.github.io/svgomg 来优化 SVG 并使其更小,然后在 grumpicon 中运行它以创建该链接。
    猜你喜欢
    • 2015-06-30
    • 2012-12-17
    • 2017-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 2021-09-04
    相关资源
    最近更新 更多