Jekyll 工作流程中 CSS 中的内联 SVG
Inline SVG in CSS within the Jekyll workflow
我使用 https://github.com/GSI/jekyll_image_encode 将 SVG 内联到我的 CSS:
background: url("{% base64 foo.svg %}");
但这增加了 base64 编码开销。我想内联 SVG 本身。但是为此,我需要在 foo.svg
文件中删除这个 header:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
我需要对 SVG 内容进行 URL 编码。
我该怎么做?
{% capture svg %}{% include img/gnu.svg %}{% endcapture %}
{% assign svgsplit = svg | split: 'svg11.dtd">' %}
{% assign svgpart = svgsplit[1] | escape %}
{{ svgpart }}
我认为可以。
对于旧的 Liquid 版本,这是一个解决方法:
{% capture svg %}{% include foo.svg %}{% endcapture %}
{% assign svgsplit = svg | split: 'svg11.dtd">' %}
{% assign svgpart = svgsplit[1] | strip_newlines %}
{% assign svgpart_url_encoded = svgpart | replace: ' ', '%20' | replace: '&', '%26' | replace: '?', '%3F' | replace: '!', '%21' | replace: ',', '%2C' | replace: "'", "%27" | replace: "<", "%3C" | replace: '>', '%3E' | replace: '"', '%22' %}
{{ svgpart_url_encoded }}
我使用 https://github.com/GSI/jekyll_image_encode 将 SVG 内联到我的 CSS:
background: url("{% base64 foo.svg %}");
但这增加了 base64 编码开销。我想内联 SVG 本身。但是为此,我需要在 foo.svg
文件中删除这个 header:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
我需要对 SVG 内容进行 URL 编码。
我该怎么做?
{% capture svg %}{% include img/gnu.svg %}{% endcapture %}
{% assign svgsplit = svg | split: 'svg11.dtd">' %}
{% assign svgpart = svgsplit[1] | escape %}
{{ svgpart }}
我认为可以。
对于旧的 Liquid 版本,这是一个解决方法:
{% capture svg %}{% include foo.svg %}{% endcapture %}
{% assign svgsplit = svg | split: 'svg11.dtd">' %}
{% assign svgpart = svgsplit[1] | strip_newlines %}
{% assign svgpart_url_encoded = svgpart | replace: ' ', '%20' | replace: '&', '%26' | replace: '?', '%3F' | replace: '!', '%21' | replace: ',', '%2C' | replace: "'", "%27" | replace: "<", "%3C" | replace: '>', '%3E' | replace: '"', '%22' %}
{{ svgpart_url_encoded }}