mkdocs-material/docs/reference/icons-emojis.md

240 lines
6.7 KiB
Markdown
Raw Permalink Normal View History

2020-07-24 10:59:16 +03:00
---
2022-01-07 13:06:11 +03:00
icon: material/emoticon-happy-outline
2020-07-24 10:59:16 +03:00
---
2022-03-27 15:01:30 +03:00
# Icons, Emojis
2020-07-24 10:59:16 +03:00
One of the best features of Material for MkDocs is the possibility to use [more
2023-09-15 10:25:50 +03:00
than 10,000 icons][icon search] and thousands of emojis in your project
documentation with practically zero additional effort. Moreover, [custom icons
can be added] and used in `mkdocs.yml`, documents and templates.
2021-10-05 00:36:31 +03:00
[icon search]: #search
2023-09-02 15:57:41 +03:00
[custom icons can be added]: ../setup/changing-the-logo-and-icons.md#additional-icons
2020-07-24 10:59:16 +03:00
2021-02-06 14:35:19 +03:00
## Search
<div class="mdx-iconsearch" data-mdx-component="iconsearch">
<input
class="md-input md-input--stretch mdx-iconsearch__input"
2021-02-15 17:57:44 +03:00
placeholder="Search the icon and emoji database"
data-mdx-component="iconsearch-query"
/>
<div class="mdx-iconsearch-result" data-mdx-component="iconsearch-result">
<select
class="mdx-iconsearch-result__select"
data-mdx-component="iconsearch-select"
>
<option value="all" selected>All</option>
<option value="icons">Icons</option>
<option value="emojis">Emojis</option>
</select>
<div class="mdx-iconsearch-result__meta"></div>
<ol class="mdx-iconsearch-result__list"></ol>
</div>
2021-02-06 14:35:19 +03:00
</div>
<small>
:octicons-light-bulb-16:
2021-10-05 00:36:31 +03:00
**Tip:** Enter some keywords to find icons and emojis and click on the
shortcode to copy it to your clipboard.
</small>
2021-02-06 14:35:19 +03:00
2020-07-24 10:59:16 +03:00
## Configuration
2021-10-05 00:36:31 +03:00
This configuration enables the use of icons and emojis by using simple
shortcodes which can be discovered through the [icon search]. Add the following
lines to `mkdocs.yml`:
2020-07-24 10:59:16 +03:00
``` yaml
markdown_extensions:
- attr_list
2020-07-24 10:59:16 +03:00
- pymdownx.emoji:
2023-09-21 19:56:35 +03:00
emoji_index: !!python/name:material.extensions.emoji.twemoji
emoji_generator: !!python/name:material.extensions.emoji.to_svg
2020-07-24 10:59:16 +03:00
```
The following icon sets are bundled with Material for MkDocs:
2021-10-05 00:36:31 +03:00
- :material-material-design: [Material Design]
- :fontawesome-brands-font-awesome: [FontAwesome]
- :octicons-mark-github-16: [Octicons]
2022-09-07 20:34:35 +03:00
- :simple-simpleicons: [Simple Icons]
2020-07-24 10:59:16 +03:00
2021-10-05 00:36:31 +03:00
See additional configuration options:
2020-07-26 15:46:09 +03:00
- [Attribute Lists]
2021-10-05 00:36:31 +03:00
- [Emoji]
- [Emoji with custom icons]
2020-07-26 15:46:09 +03:00
2021-10-05 00:36:31 +03:00
[Material Design]: https://materialdesignicons.com/
2022-02-09 12:06:24 +03:00
[FontAwesome]: https://fontawesome.com/search?m=free
2021-10-05 00:36:31 +03:00
[Octicons]: https://octicons.github.com/
2022-09-07 20:34:35 +03:00
[Simple Icons]: https://simpleicons.org/
[Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists
2021-10-05 00:36:31 +03:00
[Emoji]: ../setup/extensions/python-markdown-extensions.md#emoji
2023-03-14 13:25:38 +03:00
[Emoji with custom icons]: ../setup/extensions/python-markdown-extensions.md#+pymdownx.emoji.options.custom_icons
2020-07-26 15:46:09 +03:00
2020-07-24 10:59:16 +03:00
## Usage
### Using emojis
Emojis can be integrated in Markdown by putting the shortcode of the emoji
2021-10-05 00:36:31 +03:00
between two colons. If you're using [Twemoji] (recommended), you can look up
the shortcodes at [Emojipedia]:
2020-07-24 10:59:16 +03:00
``` title="Emoji"
2023-09-15 10:25:50 +03:00
:smile:
2020-07-24 10:59:16 +03:00
```
<div class="result" markdown>
2020-07-24 10:59:16 +03:00
:smile:
</div>
[Twemoji]: https://github.com/twitter/twemoji
2021-10-05 00:36:31 +03:00
[Emojipedia]: https://emojipedia.org/twitter/
2020-07-24 10:59:16 +03:00
### Using icons
2021-10-05 00:36:31 +03:00
When [Emoji] is enabled, icons can be used similar to emojis, by referencing
2020-07-24 10:59:16 +03:00
a valid path to any icon bundled with the theme, which are located in the
2021-10-10 13:19:14 +03:00
[`.icons`][custom icons] directory, and replacing `/` with `-`:
2020-07-24 10:59:16 +03:00
``` title="Icon"
:fontawesome-regular-face-laugh-wink:
2020-07-24 10:59:16 +03:00
```
<div class="result" markdown>
2020-07-24 10:59:16 +03:00
:fontawesome-regular-face-laugh-wink:
</div>
2020-07-26 15:46:09 +03:00
2023-09-20 15:59:25 +03:00
[custom icons]: https://github.com/squidfunk/mkdocs-material/tree/master/material/templates/.icons
2020-07-26 15:46:09 +03:00
#### with colors
2022-04-04 13:05:23 +03:00
When [Attribute Lists] is enabled, custom CSS classes can be added to icons by
suffixing the icon with a special syntax. While HTML allows to use [inline
styles], it's always recommended to add an [additional style sheet] and move
declarations into dedicated CSS classes:
<style>
2023-11-04 10:37:31 +03:00
.youtube {
color: #EE0F0F;
}
</style>
2022-09-11 20:25:40 +03:00
=== ":octicons-file-code-16: `docs/stylesheets/extra.css`"
2021-10-10 13:19:14 +03:00
``` css
2023-11-04 10:37:31 +03:00
.youtube {
color: #EE0F0F;
2021-10-10 13:19:14 +03:00
}
```
2022-09-11 20:25:40 +03:00
=== ":octicons-file-code-16: `mkdocs.yml`"
2021-10-10 13:19:14 +03:00
``` yaml
extra_css:
2021-10-10 18:39:53 +03:00
- stylesheets/extra.css
2021-10-10 13:19:14 +03:00
```
After applying the customization, add the CSS class to the icon shortcode:
``` markdown title="Icon with color"
2023-11-04 10:37:31 +03:00
:fontawesome-brands-youtube:{ .youtube }
```
<div class="result" markdown>
2023-11-04 10:37:31 +03:00
:fontawesome-brands-youtube:{ .youtube }
</div>
2021-10-10 13:19:14 +03:00
[Attribute Lists]: ../setup/extensions/python-markdown.md#attribute-lists
[inline styles]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/style
[additional style sheet]: ../customization.md#additional-css
#### with animations
2021-10-10 13:19:14 +03:00
Similar to adding [colors], it's just as easy to add [animations] to icons by
using an [additional style sheet], defining a `@keyframes` rule and adding a
dedicated CSS class to the icon:
2022-09-11 20:25:40 +03:00
=== ":octicons-file-code-16: `docs/stylesheets/extra.css`"
2021-10-10 13:19:14 +03:00
``` css
@keyframes heart {
0%, 40%, 80%, 100% {
transform: scale(1);
}
20%, 60% {
transform: scale(1.15);
}
}
.heart {
animation: heart 1000ms infinite;
}
```
2022-09-11 20:25:40 +03:00
=== ":octicons-file-code-16: `mkdocs.yml`"
2021-10-10 13:19:14 +03:00
``` yaml
extra_css:
2021-10-10 18:39:53 +03:00
- stylesheets/extra.css
2021-10-10 13:19:14 +03:00
```
After applying the customization, add the CSS class to the icon shortcode:
``` markdown title="Icon with animation"
:octicons-heart-fill-24:{ .heart }
```
<div class="result" markdown>
:octicons-heart-fill-24:{ .mdx-heart }
2020-07-24 10:59:16 +03:00
</div>
2021-10-10 13:19:14 +03:00
[colors]: #with-colors
[animations]: https://developer.mozilla.org/en-US/docs/Web/CSS/animation
2023-01-12 23:12:50 +03:00
### Icons, emojis in sidebars :smile:
2023-01-12 23:12:50 +03:00
With the help of the [built-in typeset plugin], you can use icons and emojis
in headings, which will then be rendered in the sidebars. The plugin preserves
Markdown and HTML formatting.
2023-09-15 10:25:50 +03:00
[built-in typeset plugin]: ../plugins/typeset.md
## Customization
### Using icons in templates
2021-10-10 13:19:14 +03:00
When you're [extending the theme] with partials or blocks, you can simply
reference any icon that's [bundled with the theme][icon search] with Jinja's
[`include`][include] function and wrap it with the `.twemoji` CSS class:
``` html
<span class="twemoji">
2023-11-04 10:37:31 +03:00
{% include ".icons/fontawesome/brands/youtube.svg" %} <!-- (1)! -->
</span>
```
1. Enter a few keywords to find the perfect icon using our [icon search] and
click on the shortcode to copy it to your clipboard:
<div class="mdx-iconsearch" data-mdx-component="iconsearch">
2023-11-04 10:37:31 +03:00
<input class="md-input md-input--stretch mdx-iconsearch__input" placeholder="Search icon" data-mdx-component="iconsearch-query" value="brands youtube" />
<div class="mdx-iconsearch-result" data-mdx-component="iconsearch-result" data-mdx-mode="file">
<div class="mdx-iconsearch-result__meta"></div>
<ol class="mdx-iconsearch-result__list"></ol>
</div>
</div>
This is exactly what Material for MkDocs does in its templates.
2021-10-10 13:19:14 +03:00
[extending the theme]: ../customization.md#extending-the-theme
[include]: https://jinja.palletsprojects.com/en/2.11.x/templates/#include