css - 没有 base64 编码的手写笔内联 SVG 数据 uri

标签 css node.js svg stylus data-uri

如何使用 Stylus 在 CSS 中嵌入 SVG 数据 uri没有 SVG 被 Base64 编码的预处理器?

像这样:

background: url('data:image/svg+xml;utf8,<svg>[...]</svg>');

而不是这个:

background: url('data:image/svg+xml;base64,PD94bWwg[...]');

通常我使用 stylus.url() 来嵌入图像,但它也会对 SVG 进行 Base64 编码。

我想使用数据 uris 而不是外部文件来保存文件请求。而且我已经意识到 Base64 编码 SVG 实际上会增加字节而不是减少大小。

我找不到按原样嵌入 SVG 的方法。

最佳答案

由于找不到既定的方法来做到这一点,我不得不自己解决。我写了一个简单的 Node 模块,它包装了 stylus.url() 但替换了 SVG 的内联方式。

模块链接:https://www.npmjs.com/package/stylus-inline-svg

除了一些检查,它基本上是这样做的:

found = stylus.utils.lookup(url.string, options.paths);

if(!found) return literal;

buf = fs.readFileSync(found);

buf = String(buf)
    .replace(/<\?xml(.+?)\?>/, '')
    .replace(/^\s+|\s+$/g, '')
    .replace(/(\r\n|\n|\r)/gm, '');

return new stylus.nodes.Literal("url('data:image/svg+xml;utf8," + buf + "')");

关于css - 没有 base64 编码的手写笔内联 SVG 数据 uri,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28769564/

相关文章:

html - 如何防止调整大小时换行?

css - 图像上的响应式文本叠加

javascript - 使用 Chartist 在 x 轴显示长标签

javascript - Node.JS/Express/Mongodb/Mongoose 简单连接问题

javascript - "growing"时间轴的动画效果

css - 样式化的 unicode 箭头未显示为 Google Fonts 网络字体

javascript - 了解 ReactJS 和 NodeJS 应用程序如何工作

javascript - 如何调整 svg 的大小以适应 div?

css - 如何在 SVG 径向渐变中反转 css 剪辑路径或动画硬停止

使用 SVG 时,Angular ControlValueAccessor 复选框始终为真