{"id":4544,"date":"2018-03-17T14:22:50","date_gmt":"2018-03-17T13:22:50","guid":{"rendered":"https:\/\/florianbrinkmann.com\/en\/?p=4544"},"modified":"2020-02-09T11:26:03","modified_gmt":"2020-02-09T10:26:03","slug":"editor-styles-gutenberg","status":"publish","type":"post","link":"https:\/\/florianbrinkmann.com\/en\/editor-styles-gutenberg-4544\/","title":{"rendered":"Creating theme editor styles for Gutenberg"},"content":{"rendered":"<p>WordPress 5 will come with a new editor called \u00bb<a href=\"https:\/\/wordpress.org\/gutenberg\/\">Gutenberg<\/a>\u00ab, which is completely different from the current TinyMCE. That does not only mean change for the users, but also for theme developers, who want to modify editor styles, so it looks like in the frontend. This post shows you how that works for the new editor.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">The previous procedure with TinyMCE: quite pleasant<\/h2>\n\n\n\n<p>The post content in the TinyMCE editor lives inside an iFrame, that means theme specific styles can be written similar to the frontend CSS. There is a normal website\u2019s markup in the DOM just for the content, the visible content is inside a body element, and inside the body, there are the content elements directly, like paragraphs, headings, et cetera. That is how the DOM looks like:<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone size-full wp-image-4545\"><noscript><img decoding=\"async\" width=\"844\" height=\"290\" src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom.png\" alt class=\"wp-image-4545\" srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom.png 844w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-582x200.png 582w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-300x103.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-768x264.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-806x277.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-600x206.png 600w\" sizes=\"(max-width: 844px) 100vw, 844px\"><\/noscript><img decoding=\"async\" width=\"844\" height=\"290\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20844%20290%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-4545 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20844%20290%22%3E%3C%2Fsvg%3E 844w\" sizes=\"(max-width: 844px) 100vw, 844px\" data-srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom.png 844w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-582x200.png 582w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-300x103.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-768x264.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-806x277.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom-600x206.png 600w\" data-src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-tinymce-content-dom.png\"><figcaption>DOM of this post\u2019s content in the TinyMCE. (Screenshot: Firefox dev tools)<\/figcaption><\/figure>\n\n\n\n<p>With that, it is not that difficult to implement the basic styles of the theme into TinyMCE.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The procedure with Gutenberg: not so pleasant<\/h2>\n\n\n\n<p>With Gutenberg, it is slightly different. First, the editor does not sit in an iFrame, which in itself is good. Among that, all content elements are so-called blocks, which are wrapped in divs that have spacing around them, et cetera. The DOM of this post looks like that in Gutenberg:<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone wp-image-4546 size-full\"><noscript><img decoding=\"async\" width=\"915\" height=\"726\" src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom.png\" alt class=\"wp-image-4546\" srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom.png 915w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-252x200.png 252w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-300x238.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-768x609.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-806x640.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-600x476.png 600w\" sizes=\"(max-width: 915px) 100vw, 915px\"><\/noscript><img decoding=\"async\" width=\"915\" height=\"726\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20915%20726%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-4546 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20915%20726%22%3E%3C%2Fsvg%3E 915w\" sizes=\"(max-width: 915px) 100vw, 915px\" data-srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom.png 915w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-252x200.png 252w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-300x238.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-768x609.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-806x640.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom-600x476.png 600w\" data-src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-dom.png\"><figcaption>DOM of this post\u2019s content in the Gutenberg editor. (Screenshot: Firefox dev tools)<\/figcaption><\/figure>\n\n\n\n<p>Very complex compared with the content\u2019s markup in TinyMCE\u2026<\/p>\n\n\n\n<p>So much for the starting point. But before we can start writing the CSS rules, let us begin loading the stylesheet. Helpful for me was the article \u00bb<a href=\"https:\/\/richtabor.com\/add-wordpress-theme-styles-to-gutenberg\/\">How to add WordPress Theme Styles to Gutenberg<\/a>\u00ab by Rich Tabor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Including a stylesheet for Gutenberg modifications<\/h3>\n\n\n\n<p>Including the stylesheet is not that hard:<\/p>\n\n\n<pre class=\"wp-block-code lang-php\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-comment\">\/\/ Add backend styles for Gutenberg.<\/span>\nadd_action( <span class=\"hljs-string\">'enqueue_block_editor_assets'<\/span>, <span class=\"hljs-string\">'photographus_add_gutenberg_assets'<\/span> );\n\n<span class=\"hljs-comment\">\/**\n * Load Gutenberg stylesheet.\n *\/<\/span>\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">photographus_add_gutenberg_assets<\/span><span class=\"hljs-params\">()<\/span> <\/span>{\n\t<span class=\"hljs-comment\">\/\/ Load the theme styles within Gutenberg.<\/span>\n\twp_enqueue_style( <span class=\"hljs-string\">'photographus-gutenberg'<\/span>, get_theme_file_uri( <span class=\"hljs-string\">'\/assets\/css\/gutenberg-editor-style.css'<\/span> ), <span class=\"hljs-keyword\">false<\/span> );\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>We hook a function to the <code class=\"lang-php\">enqueue_block_editor_assets<\/code> hook and add the stylesheet via <code class=\"lang-php\">wp_enqueue_style<\/code>. Now to the CSS rules.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Writing styles for Gutenberg<\/h3>\n\n\n\n<p>Gutenberg comes with styles we need to overwrite. We can use <code class=\"lang-css\">.edit-post-visual-editor<\/code> as the wrapper for the content, the blocks itself have the <code class=\"lang-css\">.editor-block-list__block<\/code> class.<\/p>\n\n\n\n<p>We need to be careful to not modify styles of the inline toolbar or other inline tools from Gutenberg. Useful classes are:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code class=\"lang-css\">.mce-content-body<\/code> \u2013 used for many text block elements, like headings, paragraphs (but not the ones inside of <code>blockquote<\/code> elements), lists, and so on.<\/li><li><code class=\"lang-css\">.wp-block-quote<\/code> \u2013 a class for block quotes.<\/li><li><code class=\"lang-css\">.editor-block-list__block-edit<\/code>&nbsp;\u2013 wrapper inside of <code class=\"lang-css\">.editor-block-list__block<\/code> for the content element.<\/li><\/ul>\n\n\n\n<p>My current state of editor styles for Gutenberg in my Photographus theme looks like the following in SASS (I removed media queries to make it shorter):<\/p>\n\n\n<pre class=\"wp-block-code lang-css\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"SCSS\" data-shcb-language-slug=\"scss\"><span><code class=\"hljs language-scss\"><span class=\"hljs-keyword\">@import<\/span> <span class=\"hljs-string\">\"abstracts\/variables\"<\/span>;\n<span class=\"hljs-keyword\">@import<\/span> <span class=\"hljs-string\">\"abstracts\/functions\"<\/span>;\n<span class=\"hljs-keyword\">@import<\/span> <span class=\"hljs-string\">\"abstracts\/mixins\"<\/span>;\n\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> <span class=\"hljs-selector-class\">.editor-block-list__block<\/span> {\n\t<span class=\"hljs-attribute\">color<\/span>: <span class=\"hljs-variable\">$color-tundora<\/span>;\n\t<span class=\"hljs-attribute\">margin<\/span>: <span class=\"hljs-number\">0<\/span> auto;\n\t<span class=\"hljs-attribute\">max-width<\/span>: <span class=\"hljs-variable\">$content-max-width<\/span>;\n}\n\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> <span class=\"hljs-selector-tag\">p<\/span>,\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span>,\n<span class=\"hljs-selector-class\">.blocks-rich-text__tinymce<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t<span class=\"hljs-attribute\">line-height<\/span>: inherit;\n\t<span class=\"hljs-attribute\">font-size<\/span>: inherit;\n}\n\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> <span class=\"hljs-selector-class\">.editor-block-list__block-edit<\/span>,\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> {\n\t<span class=\"hljs-attribute\">font-family<\/span>: <span class=\"hljs-string\">\"PT Serif\"<\/span>, Georgia, serif;\n\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1em<\/span>;\n\t<span class=\"hljs-attribute\">line-height<\/span>: <span class=\"hljs-variable\">$line-height<\/span>;\n}\n\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> <span class=\"hljs-selector-class\">.editor-block-list__block<\/span> {\n\t<span class=\"hljs-selector-tag\">h1<\/span>,\n\t<span class=\"hljs-selector-tag\">h2<\/span>,\n\t<span class=\"hljs-selector-tag\">h3<\/span>,\n\t<span class=\"hljs-selector-tag\">h4<\/span>,\n\t<span class=\"hljs-selector-tag\">h5<\/span>,\n\t<span class=\"hljs-selector-tag\">h6<\/span> {\n\t\t&amp;<span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t\t<span class=\"hljs-attribute\">font-weight<\/span>: <span class=\"hljs-number\">400<\/span>;\n\t\t}\n\n\t}\n\n\t<span class=\"hljs-selector-tag\">h1<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1.802em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1.802<\/span>, <span class=\"hljs-number\">1.5<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">h2<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1.602em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1.602<\/span>, <span class=\"hljs-number\">1.5<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">h3<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1.424em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1.424<\/span>, <span class=\"hljs-number\">1.25<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">h4<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1.266em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1.266<\/span>, <span class=\"hljs-number\">1.25<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">h5<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1.125em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1.125<\/span>, <span class=\"hljs-number\">1<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">h6<\/span><span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-number\">1em<\/span>;\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: line-height(<span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">1<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">figure<\/span> {\n\t\t<span class=\"hljs-attribute\">line-height<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t\t<span class=\"hljs-attribute\">margin<\/span>: add-unit(<span class=\"hljs-variable\">$space-half<\/span>, <span class=\"hljs-string\">'em'<\/span>) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span>;\n\n\t\t<span class=\"hljs-selector-tag\">figcaption<\/span>,\n\t\t<span class=\"hljs-selector-tag\">img<\/span> {\n\t\t\t<span class=\"hljs-attribute\">line-height<\/span>: <span class=\"hljs-variable\">$line-height<\/span>;\n\t\t}\n\t}\n\n\t<span class=\"hljs-selector-tag\">figcaption<\/span> {\n\t\t<span class=\"hljs-attribute\">clear<\/span>: both;\n\t\t<span class=\"hljs-attribute\">color<\/span>: inherit;\n\t\t<span class=\"hljs-attribute\">font-size<\/span>: <span class=\"hljs-variable\">$font-size-small<\/span>;\n\t\t<span class=\"hljs-attribute\">padding-top<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>);\n\t\t<span class=\"hljs-attribute\">text-align<\/span>: left;\n\t}\n\n\t<span class=\"hljs-selector-tag\">blockquote<\/span><span class=\"hljs-selector-class\">.wp-block-quote<\/span> {\n\t\t<span class=\"hljs-attribute\">border-left<\/span>: <span class=\"hljs-number\">2px<\/span> solid;\n\t\t<span class=\"hljs-attribute\">padding-left<\/span>: add-unit(<span class=\"hljs-variable\">$space-half<\/span>, <span class=\"hljs-string\">'em'<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">blockquote<\/span><span class=\"hljs-selector-class\">.wp-block-quote<\/span> <span class=\"hljs-selector-tag\">cite<\/span> {\n\t\t<span class=\"hljs-attribute\">display<\/span>: block;\n\t\t<span class=\"hljs-attribute\">font-style<\/span>: italic;\n\t\t<span class=\"hljs-attribute\">margin<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">table<\/span> {\n\t\t<span class=\"hljs-attribute\">border-spacing<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">td<\/span>,\n\t<span class=\"hljs-selector-tag\">th<\/span> {\n\t\t<span class=\"hljs-attribute\">border<\/span>: none;\n\t\t<span class=\"hljs-attribute\">border-bottom<\/span>: <span class=\"hljs-number\">1px<\/span> solid;\n\t\t<span class=\"hljs-attribute\">padding<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">th<\/span> {\n\t\t<span class=\"hljs-attribute\">border-bottom<\/span>: <span class=\"hljs-number\">2px<\/span> solid;\n\t\t<span class=\"hljs-attribute\">text-align<\/span>: left;\n\t}\n\n\t<span class=\"hljs-selector-tag\">table<\/span> <span class=\"hljs-selector-tag\">tr<\/span><span class=\"hljs-selector-pseudo\">:last-of-type<\/span> <span class=\"hljs-selector-tag\">td<\/span> {\n\t\t<span class=\"hljs-attribute\">border-bottom<\/span>: none;\n\t}\n\n\t<span class=\"hljs-selector-tag\">dt<\/span> {\n\t\t<span class=\"hljs-attribute\">margin<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">dd<\/span> {\n\t\t<span class=\"hljs-attribute\">margin<\/span>: <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> add-unit(<span class=\"hljs-variable\">$space<\/span>, <span class=\"hljs-string\">'em'<\/span>);\n\t}\n\n\t<span class=\"hljs-selector-tag\">ul<\/span>,\n\t<span class=\"hljs-selector-tag\">ol<\/span> {\n\t\t<span class=\"hljs-attribute\">padding-left<\/span>: <span class=\"hljs-number\">1rem<\/span>;\n\t\t<span class=\"hljs-attribute\">margin-left<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">ul<\/span> &gt; <span class=\"hljs-selector-tag\">li<\/span> {\n\t\t<span class=\"hljs-attribute\">list-style-type<\/span>: none;\n\t\t<span class=\"hljs-attribute\">position<\/span>: relative;\n\t}\n\n\t<span class=\"hljs-selector-tag\">ul<\/span> &gt; <span class=\"hljs-selector-tag\">li<\/span><span class=\"hljs-selector-pseudo\">::before<\/span> {\n\t\t<span class=\"hljs-attribute\">content<\/span>: <span class=\"hljs-string\">\"\u00b7\"<\/span>;\n\t\t<span class=\"hljs-attribute\">left<\/span>: -#{add-unit(<span class=\"hljs-variable\">$space-half<\/span>, <span class=\"hljs-string\">'em'<\/span>)};\n\t\t<span class=\"hljs-attribute\">top<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t\t<span class=\"hljs-attribute\">position<\/span>: absolute;\n\t}\n\n\t<span class=\"hljs-selector-tag\">li<\/span> + <span class=\"hljs-selector-tag\">li<\/span> {\n\t\t<span class=\"hljs-attribute\">margin<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">ul<\/span> <span class=\"hljs-selector-tag\">ol<\/span>,\n\t<span class=\"hljs-selector-tag\">ol<\/span> <span class=\"hljs-selector-tag\">ul<\/span>,\n\t<span class=\"hljs-selector-tag\">ul<\/span> <span class=\"hljs-selector-tag\">ul<\/span>,\n\t<span class=\"hljs-selector-tag\">ol<\/span> <span class=\"hljs-selector-tag\">ol<\/span> {\n\t\t<span class=\"hljs-attribute\">margin<\/span>: add-unit(<span class=\"hljs-variable\">$space-quarter<\/span>, <span class=\"hljs-string\">'em'<\/span>) <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span>;\n\t}\n}\n\n<span class=\"hljs-selector-class\">.edit-post-visual-editor<\/span> <span class=\"hljs-selector-class\">.mce-content-body<\/span> {\n\t<span class=\"hljs-selector-tag\">a<\/span> {\n\t\t<span class=\"hljs-attribute\">box-shadow<\/span>: inset <span class=\"hljs-number\">0<\/span> -<span class=\"hljs-number\">1px<\/span> <span class=\"hljs-number\">0<\/span> currentColor;\n\t\t<span class=\"hljs-attribute\">box-shadow<\/span>: inset <span class=\"hljs-number\">0<\/span> -<span class=\"hljs-number\">1px<\/span> <span class=\"hljs-number\">0<\/span> currentColor, <span class=\"hljs-number\">4px<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> transparent, -<span class=\"hljs-number\">4px<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> transparent;\n\t\t<span class=\"hljs-attribute\">box-decoration-break<\/span>: clone;\n\t\t<span class=\"hljs-attribute\">color<\/span>: inherit;\n\t\t<span class=\"hljs-attribute\">padding-bottom<\/span>: .<span class=\"hljs-number\">05em<\/span>;\n\t\t<span class=\"hljs-attribute\">padding-top<\/span>: .<span class=\"hljs-number\">05em<\/span>;\n\t\t<span class=\"hljs-attribute\">text-decoration<\/span>: none;\n\t\t-webkit-<span class=\"hljs-attribute\">text-decoration<\/span>-skip: objects;\n\t\t<span class=\"hljs-attribute\">transition<\/span>: box-shadow .<span class=\"hljs-number\">2s<\/span> ease <span class=\"hljs-number\">0s<\/span>, background .<span class=\"hljs-number\">2s<\/span> ease <span class=\"hljs-number\">0s<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">a<\/span><span class=\"hljs-selector-pseudo\">:active<\/span>,\n\t<span class=\"hljs-selector-tag\">a<\/span><span class=\"hljs-selector-pseudo\">:hover<\/span> {\n\t\t<span class=\"hljs-attribute\">box-shadow<\/span>: inset <span class=\"hljs-number\">0<\/span> -<span class=\"hljs-number\">1px<\/span> <span class=\"hljs-number\">0<\/span> transparent;\n\t\t<span class=\"hljs-attribute\">outline-width<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t}\n\n\t<span class=\"hljs-selector-tag\">a<\/span><span class=\"hljs-selector-pseudo\">:focus<\/span> {\n\t\t<span class=\"hljs-attribute\">background<\/span>: <span class=\"hljs-variable\">$color-tundora<\/span>;\n\t\t<span class=\"hljs-attribute\">box-shadow<\/span>: inset <span class=\"hljs-number\">0<\/span> -<span class=\"hljs-number\">1px<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-variable\">$color-tundora<\/span>, <span class=\"hljs-number\">4px<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-variable\">$color-tundora<\/span>, -<span class=\"hljs-number\">4px<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-number\">0<\/span> <span class=\"hljs-variable\">$color-tundora<\/span>;\n\t\t<span class=\"hljs-attribute\">color<\/span>: <span class=\"hljs-variable\">$color-white<\/span>;\n\t\t<span class=\"hljs-attribute\">outline-width<\/span>: <span class=\"hljs-number\">0<\/span>;\n\t}\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SCSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">scss<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>First, I reset some styles of Gutenberg and define my base styles, like font and line height. After that, I define styles for the block elements and in the end for the inline elements, that live inside <code class=\"lang-css\">.mce-content-body<\/code> (currently, that are just links in my stylesheet).<\/p>\n\n\n\n<p>An unresolved problem for me is to define the spacing between elements in Gutenberg. If we want, for example, give the headings space to the top, the inline toolbar would float far away from the actual text.<\/p>\n\n\n\n<p>That is a screenshot from Gutenberg with the current result:<\/p>\n\n\n\n<figure class=\"wp-block-image alignnone size-full wp-image-4547\"><noscript><img decoding=\"async\" width=\"1089\" height=\"632\" src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles.png\" alt class=\"wp-image-4547\" srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles.png 1089w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-345x200.png 345w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-300x174.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-768x446.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-806x468.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-600x348.png 600w\" sizes=\"(max-width: 1089px) 100vw, 1089px\"><\/noscript><img decoding=\"async\" width=\"1089\" height=\"632\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201089%20632%22%3E%3C%2Fsvg%3E\" alt class=\"wp-image-4547 lazyload\" srcset=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%201089%20632%22%3E%3C%2Fsvg%3E 1089w\" sizes=\"(max-width: 1089px) 100vw, 1089px\" data-srcset=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles.png 1089w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-345x200.png 345w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-300x174.png 300w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-768x446.png 768w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-806x468.png 806w, https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles-600x348.png 600w\" data-src=\"https:\/\/florianbrinkmann.com\/en\/wp-content\/uploads\/sites\/11\/2018\/03\/wordpress-editor-gutenberg-content-styles.png\"><figcaption>The editor styles for Gutenberg in action. (Screenshot: own installation)<\/figcaption><\/figure>\n\n\n\n<p>I am quite happy with that for now.<\/p>\n\n\n\n<p>Like you can see, writing editor styles for Gutenberg is a little bit of trying and not made quickly. What you should avoid is: just take the styles for TinyMCE, copy them and think it will work. That could break the styles of the editor.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>WordPress 5 will come with a new editor called \u00bbGutenberg\u00ab, which is completely different from the current TinyMCE. That does not only mean change for the users, but also for theme developers, who want to modify editor styles, so it looks like in the frontend. This post shows you how that works for the new [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wpf_show_in_dewp_planet_feed":false,"flobn_post_versions":"","webmentions_disabled_pings":false,"webmentions_disabled":false,"lazy_load_responsive_images_disabled":false,"footnotes":""},"categories":[115],"tags":[],"class_list":["post-4544","post","type-post","status-publish","format-standard","hentry","category-wordpress-snippets"],"wp-worthy-pixel":{"ignored":false,"public":"839d71ec293e4b9e9dfef97a159f0536","server":"vg04.met.vgwort.de","url":"https:\/\/vg04.met.vgwort.de\/na\/839d71ec293e4b9e9dfef97a159f0536"},"wp-worthy-type":"normal","_links":{"self":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4544","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/comments?post=4544"}],"version-history":[{"count":3,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4544\/revisions"}],"predecessor-version":[{"id":5970,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/posts\/4544\/revisions\/5970"}],"wp:attachment":[{"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/media?parent=4544"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/categories?post=4544"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/florianbrinkmann.com\/en\/wp-json\/wp\/v2\/tags?post=4544"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}