/* Content shown inside the front-submit TinyMCE iframe. */ /* 隐藏内容:短代码留在 .hide-before / .hide-after,编辑器只显示可读标签。 */ .tinymce-hide { position: relative; margin: 18px 0; padding: 38px 14px 14px; border: 1px dashed rgba(240, 68, 148, 0.35); border-radius: 6px; background: rgba(240, 68, 148, 0.04); } .tinymce-hide > .hide-before, .tinymce-hide > .hide-after { margin: 0; color: #f04494; font-family: Consolas, Monaco, monospace; font-size: 0; line-height: 1.5; } .tinymce-hide > .hide-before { position: absolute; top: 10px; left: 14px; } .tinymce-hide > .hide-before::before { content: attr(data-jio-hide-label); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 12px; font-weight: 600; letter-spacing: 0.02em; } .tinymce-hide > .hide-after { display: none; } .tinymce-hide > [contenteditable="true"] { min-height: 38px; padding: 10px; border-radius: 4px; background: rgba(255, 255, 255, 0.75); outline: 0; } .tinymce-hide > [contenteditable="true"] > :first-child { margin-top: 0; } .tinymce-hide > [contenteditable="true"] > :last-child { margin-bottom: 0; } .quote_q { position: relative; margin: 10px 0 20px; padding: 1.2em; border-radius: 6px; color: var(--quote-color); --quote-color: #555; } .quote_q::before { position: absolute; inset: 0; border-radius: 6px; background: var(--quote-color); content: ''; opacity: 0.04; } .quote_q.quote-mce::after { position: absolute; top: 20px; left: 20px; color: var(--quote-color); content: '\201c'; font-size: 24px; line-height: 1; opacity: 0.6; } .quote_q > div { position: relative; min-height: 24px; padding-left: 2em; opacity: 0.7; } .quote_q > div > :first-child { margin-top: 0; } .quote_q > div > :last-child { margin-bottom: 0; } .quote_q [contenteditable="true"] { outline: 0; border-radius: 0; box-shadow: none; } .qe_wzk_c-red { --quote-color: #dc3f3f; } .qe_wzk_lan { --quote-color: #0092ff; } .qe_wzk_lv { --quote-color: #23790e; } /* 代码块:与前台文章页一致,只用 pre > code,由 EnlighterJS 在发布页高亮。 */ pre { margin: 0 0 1.1em; padding: 14px 18px; overflow-x: auto; border-radius: 8px; background: #f2f4f5; color: #2b2b2b; font-family: Consolas, Monaco, "Courier New", monospace; font-size: 13px; line-height: 1.6; white-space: pre-wrap; word-wrap: break-word; } pre code { border: 0; background: transparent; color: inherit; font-family: inherit; font-size: inherit; line-height: inherit; padding: 0; white-space: inherit; } .file-download-box { margin-bottom: 20px; padding: 15px; border: 1px dashed #bbb; border-radius: 6px; background: #f5f5f5; } .file-download-box .file-download-icon { font-size: 24px; } .file-download-box .file-download-name { min-width: 80px; outline: 0; } .new-dplayer.post-dplayer { position: relative; min-height: 220px; margin-bottom: 20px; border-radius: 6px; background: #222; } .new-dplayer.post-dplayer::before { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; content: '视频'; opacity: 0.65; } .wp-block-embed.is-type-video { margin-bottom: 20px; } .iframe-absbox { position: relative; height: 0; overflow: hidden; border-radius: 6px; background: #222; } .iframe-absbox iframe { position: absolute; inset: 0; width: 100%; height: 100%; } /* 编辑器内的注释上标(发布后由服务端换成脚注列表) */ .mce-content-body sup.jio-footnote-ref, .tox .jio-footnote-ref { color: var(--theme-color, #267665); font-size: 0.8em; vertical-align: super; } /* * 正文占位符。 * * TinyMCE 4.9 没有内置 placeholder 插件,主题插件 front-submit-editor-basics.js * 在正文为空时给 body 打上 data-jio-empty="1",这里用 ::before 渲染提示。 * 刻意不插 DOM 节点:插入的段落会被 setContent 清掉(首次加载不显示), * 也会占住首行、挡住点击空白处落光标。 * * 绝对定位覆盖在空段落上,与原生 placeholder 的观感一致。 */ body[data-jio-empty="1"]::before { position: absolute; top: 0; left: 0; color: #b9bfbc; content: attr(data-jio-placeholder); pointer-events: none; user-select: none; } /* * body 撑满编辑区:内容很短时点击正文下方的空白区域也应落光标, * 否则只有文字所在的那一行能点。 */ html, body.mce-content-body { min-height: 100%; } body.mce-content-body { position: relative; box-sizing: border-box; }