mirror of https://gitlab.com/curben/blog
post(embed svg): update hexo-yam config
This commit is contained in:
parent
6e7a86542d
commit
e12bca5baa
|
@ -1,7 +1,8 @@
|
||||||
---
|
---
|
||||||
title: Embed SVG without using img tag
|
title: Embed SVG without using <img> tag
|
||||||
excerpt: Using img tag prevents the use of CSS to change property of SVG. There is a workaround.
|
excerpt: Using img tag prevents the use of CSS to change property of SVG. There is a workaround.
|
||||||
date: 2019-06-01
|
date: 2019-06-01
|
||||||
|
updated: 2020-08-29
|
||||||
tags:
|
tags:
|
||||||
- svg
|
- svg
|
||||||
- web
|
- web
|
||||||
|
@ -11,7 +12,7 @@ Website usually embed SVG using `<img>` tag or directly use the `<svg>` tag. Usi
|
||||||
|
|
||||||
## Embed SVG file
|
## Embed SVG file
|
||||||
|
|
||||||
Utilise `<use>` tag to embed an SVG file in `svg`. For example in this blog, I have a search button on the top right corner. This is how I embed the [search.svg](/svg/search.svg):
|
Utilise `<use>` tag to embed an SVG file in `svg`. For example in this blog, I have a search button on the top right corner. This is how I embed [search.svg](/svg/search.svg):
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<svg viewBox="0 0 512 512">
|
<svg viewBox="0 0 512 512">
|
||||||
|
@ -21,31 +22,32 @@ Utilise `<use>` tag to embed an SVG file in `svg`. For example in this blog, I h
|
||||||
</svg>
|
</svg>
|
||||||
```
|
```
|
||||||
|
|
||||||
<br/>
|
|
||||||
|
|
||||||
The `<title>` is for tooltip and `<desc>` stands for description and functions similarly to the `alt` attribute in `<img>`. These two tags are optional but recommended for [SEO purpose](https://support.google.com/webmasters/answer/114016?hl=en).
|
The `<title>` is for tooltip and `<desc>` stands for description and functions similarly to the `alt` attribute in `<img>`. These two tags are optional but recommended for [SEO purpose](https://support.google.com/webmasters/answer/114016?hl=en).
|
||||||
|
|
||||||
The `viewBox` value is based on the layout you want to use. I simply use the value from the SVG file.
|
The `viewBox` value is based on the layout you want to use. I simply use the value from the SVG file.
|
||||||
|
|
||||||
Notice `#search` value in the href attribute. It refers to the `id` attribute in the SVG file, which you need to manually add it. Following is an excerpt from the search.svg.
|
Notice `#search` value in the href attribute. It refers to the `id` attribute in the SVG file, which you need to manually add it. Following is an excerpt from the search.svg.
|
||||||
|
|
||||||
```
|
``` html
|
||||||
<svg id="search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path d="..."/></svg>
|
<svg id="search" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
||||||
|
<path d="..."/>
|
||||||
|
</svg>
|
||||||
```
|
```
|
||||||
|
|
||||||
That attribute is **mandatory**; using link alone like `<use href="/svg/search.svg"/>` would *not* work. Another thing to watch out is SVG minifier like [svgo](https://github.com/svg/svgo) (the only SVG minifier?). **svgo** removes the id attribute by default, via [cleanupIDs](https://github.com/svg/svgo/blob/master/plugins/cleanupIDs.js) plugin.
|
That attribute is **mandatory**; using link alone like `<use href="/svg/search.svg"/>` would *not* work. Another thing to watch out is SVG minifier like [svgo](https://github.com/svg/svgo) (the only SVG minifier?). **svgo** removes the id attribute by default, via [cleanupIDs](https://github.com/svg/svgo/blob/master/plugins/cleanupIDs.js) plugin.
|
||||||
|
|
||||||
To disable that plugin in CLI,
|
To disable that plugin in CLI,
|
||||||
|
|
||||||
```
|
```
|
||||||
svgo --disable=cleanupIDs test.svg -o test.min.svg
|
$ svgo --disable=cleanupIDs test.svg -o test.min.svg
|
||||||
```
|
```
|
||||||
|
|
||||||
<br/>
|
If you're using my minifier plugin in Hexo, [hexo-yam](https://github.com/curbengh/hexo-yam):
|
||||||
|
|
||||||
For [hexo-yam](https://github.com/curbengh/hexo-yam),
|
```yml
|
||||||
```json
|
minify:
|
||||||
neat_svg:
|
svg:
|
||||||
plugins: [{ cleanupIDs: false }]
|
plugins: [{ cleanupIDs: false }]
|
||||||
```
|
```
|
||||||
|
|
||||||
## img tag
|
## img tag
|
||||||
|
@ -58,7 +60,7 @@ svg {
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
to set the SVG to use the same colour as the font's. The `fill` attribute is not supported in `<img>` tag. Since `<image>` property in SVG is [defined as a synonym](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image) for `<img>`, it also shares similar limitation. So, the following method *would not* work,
|
to set the SVG to use the same colour as the font's. The `fill` attribute is not supported in `<img>` tag. Since `<image>` property in SVG is [defined as a synonym](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/image) for `<img>`, it also shares similar limitation. So, the following method *does not* work,
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<svg viewBox="0 0 512 512">
|
<svg viewBox="0 0 512 512">
|
||||||
|
|
Loading…
Reference in New Issue