fix(single): align article code blocks with the reference theme

The article body ran two highlighting pipelines at once: the runtime
EnlighterJS pass (same one the comment area uses) plus a bespoke
precode.js enhancer, and a hand-rolled .code-block skin. The two
disagreed, so rendered blocks carried a dark #282c34 card with 15px
padding, 14px text, a border and a second copy button stacked on top of
the EnlighterJS toolbar.

Drop the parallel path and let one pipeline own code blocks:
- delete precode.js, single-post/code-blocks.css and the unused
  assets/js/enlighter copy that only precode.js referenced
- drop the now-dead has_code requirement (PHP scan + feature enqueue)
- render pre exactly as the reference does: bootstrap's pre box
  (9.5px padding / 13px / radius 4) plus main.css's muted background,
  with the EnlighterJS theme supplying the skin

Also scope the inline-code skin to :not(pre code) so it stops painting
the block background pink, and remap the toolbar copy glyph: \f0ea is
the clipboard in FA4 but "paste" in FA5; the clipboard is \f328.

Verified against the reference at 1440px both themes: pre 13px/18.57,
9.5px padding, radius 4, muted background; EnlighterJS block heights
151.31 / 60.38 match exactly.
This commit is contained in:
kate522 committed 2026-11-03 23:31:28 +08:00
1 parent ba32e0ef9c
commit 8ad5ef9aff
19 files changed
+112 -430

No files matched your search

+3 -1
View File
@@ -67,12 +67,14 @@
background: rgba(57, 60, 66, 0.87)
}
/* 字形码位随 FA5 重新映射:旧版 \f0ea 在 FA4 是剪贴板,FA5 里同码位变成
* 粘贴,剪贴板移到 \f328。其余两个码位在 FA5 中保持同名。 */
.enlighter-default .enlighter-toolbar .enlighter-btn-raw::after {
content: "\f121"
}
.enlighter-default .enlighter-toolbar .enlighter-btn-copy::after {
content: "\f0ea"
content: "\f328"
}
.enlighter-default .enlighter-toolbar .enlighter-btn-window::after {
+1 -1
View File
@@ -1 +1 @@
/*! EnlighterJS Syntax Highlighter 3.0.0 | Mozilla Public License 2.0 | https://enlighterjs.org */.enlighter-tooltip{z-index:100}.enlighter-default{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:13px;line-height:1.4;overflow:hidden;white-space:pre-wrap;word-wrap:break-word;margin:0 0 20px 0;padding:0;position:relative;text-align:left;direction:ltr;border-radius:8px}.enlighter-default .enlighter-special:hover{background-color:#f4f8fc}.enlighter-default .enlighter-raw{display:none;white-space:pre-wrap;word-wrap:break-word;box-shadow:none;padding:0 17px!important;color:inherit}.enlighter-toolbar{opacity:0;position:absolute;right:10px;top:8px;z-index:10;transition:.2s}.enlighter-default:hover .enlighter-toolbar{opacity:1}.enlighter-default .enlighter-btn{font: normal normal 900 14px/1 "Font Awesome 5 Free";border-radius:4px;display:inline-block;transition:.15s;padding:.3em .6em;background:rgba(235,237,239,.8);color:#666;font-size:14px;margin-left:6px;cursor:pointer}.enlighter-default .enlighter-btn:hover{color:#157ff9}.enlighter-t-atomic .enlighter-btn,.enlighter-t-dracula .enlighter-btn,.enlighter-t-monokai .enlighter-btn{background:rgba(57,60,66,.87)}.enlighter-default .enlighter-toolbar .enlighter-btn-raw::after{content:"\f121"}.enlighter-default .enlighter-toolbar .enlighter-btn-copy::after{content:"\f0ea"}.enlighter-default .enlighter-toolbar .enlighter-btn-window::after{content:"\f1b2"}.enlighter-origin{display:none!important}.enlighter-clipboard{position:absolute;left:0;bottom:0;width:1px;height:1px;overflow:hidden}.enlighter-v-inline{display:inline-block;overflow:inherit;margin:0}.enlighter-v-standard{display:block}.enlighter-v-codegroup{display:block}.enlighter-v-codegroup .enlighter-codegroup-wrapper{position:relative}div.enlighter{width:100%;border-collapse:collapse;border-spacing:0;padding:12px 0;empty-cells:show;min-width:100%;font-size:10px;margin:0;text-indent:0;-webkit-overflow-scrolling:touch;counter-reset:enlighter 0}div.enlighter>div{margin:0;border:solid 0 #fff;list-style:none;font-size:inherit;line-height:1.4;min-height:14px}div.enlighter>div>div{display:table-cell;width:100%;padding-left:10px}div.enlighter>div>div::before{content:" "}span.enlighter{display:inline-block;padding:3px 5px 1px 5px;margin:0 2px 0 2px}.enlighter span{margin:0;padding:0;line-height:inherit;font-size:13px;font-family:inherit}.enlighter-linenumbers div.enlighter>div::before{white-space:nowrap;display:block;display:table-cell;width:45px;min-width:45px;counter-increment:enlighter;content:counter(enlighter,decimal) ".";text-align:right;padding-right:8px}.enlighter-overflow-scroll.enlighter-v-standard .enlighter{overflow-x:auto;word-wrap:normal!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter-codegroup-wrapper{overflow-x:auto;word-wrap:normal!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter>div>div,.enlighter-overflow-scroll.enlighter-v-standard .enlighter>div>div{white-space:pre!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter-raw,.enlighter-overflow-scroll.enlighter-v-standard .enlighter-raw{white-space:pre!important}.enlighter-show-rawcode .enlighter-raw{padding:12px 16px!important;display:block}.enlighter-show-rawcode .enlighter{display:none!important}.enlighter-t-enlighter{color:#555;background:#f8f9fa}.enlighter-t-enlighter.enlighter-hover div.enlighter>div:hover{color:#444;background-color:#fffcd3}.enlighter-t-enlighter div.enlighter>div{color:#aaa}.enlighter-t-enlighter div.enlighter>div.enlighter-special{background-color:#fdf5f0}.enlighter-t-enlighter.enlighter-linenumbers div.enlighter>div::before{border-right:solid 1px #e8e8e8}.enlighter-t-enlighter .enlighter-text{color:#555}.enlighter-t-enlighter .enlighter-c0{color:#99a}.enlighter-t-enlighter .enlighter-c1{color:#99a}.enlighter-t-enlighter .enlighter-c2{color:#99a}.enlighter-t-enlighter .enlighter-c9{color:#9baa8f}.enlighter-t-enlighter .enlighter-k0{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k1{color:#4573f7;font-weight:700}.enlighter-t-enlighter .enlighter-k2{color:#458;font-weight:700}.enlighter-t-enlighter .enlighter-k3{color:#4da0d2;background-color:#f0f0f0}.enlighter-t-enlighter .enlighter-k4{color:#4a9141;font-weight:700}.enlighter-t-enlighter .enlighter-k5{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k6{color:#286491;font-style:italic}.enlighter-t-enlighter .enlighter-k7{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k8{color:#4da0d2}.enlighter-t-enlighter .enlighter-k9{color:#990073;font-weight:700}.enlighter-t-enlighter .enlighter-k10{color:#4a9141;font-style:italic}.enlighter-t-enlighter .enlighter-e0{color:#34068a;font-weight:700}.enlighter-t-enlighter .enlighter-e1{color:#34068a;font-weight:700}.enlighter-t-enlighter .enlighter-e2{color:#009926}.enlighter-t-enlighter .enlighter-e3{color:#286491}.enlighter-t-enlighter .enlighter-e4{color:#ff8c00;font-style:italic}.enlighter-t-enlighter .enlighter-s0{colorLine truncated
/*! EnlighterJS Syntax Highlighter 3.0.0 | Mozilla Public License 2.0 | https://enlighterjs.org */.enlighter-tooltip{z-index:100}.enlighter-default{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:13px;line-height:1.4;overflow:hidden;white-space:pre-wrap;word-wrap:break-word;margin:0 0 20px 0;padding:0;position:relative;text-align:left;direction:ltr;border-radius:8px}.enlighter-default .enlighter-special:hover{background-color:#f4f8fc}.enlighter-default .enlighter-raw{display:none;white-space:pre-wrap;word-wrap:break-word;box-shadow:none;padding:0 17px!important;color:inherit}.enlighter-toolbar{opacity:0;position:absolute;right:10px;top:8px;z-index:10;transition:.2s}.enlighter-default:hover .enlighter-toolbar{opacity:1}.enlighter-default .enlighter-btn{font: normal normal 900 14px/1 "Font Awesome 5 Free";border-radius:4px;display:inline-block;transition:.15s;padding:.3em .6em;background:rgba(235,237,239,.8);color:#666;font-size:14px;margin-left:6px;cursor:pointer}.enlighter-default .enlighter-btn:hover{color:#157ff9}.enlighter-t-atomic .enlighter-btn,.enlighter-t-dracula .enlighter-btn,.enlighter-t-monokai .enlighter-btn{background:rgba(57,60,66,.87)}.enlighter-default .enlighter-toolbar .enlighter-btn-raw::after{content:"\f121"}.enlighter-default .enlighter-toolbar .enlighter-btn-copy::after{content:"\f328"}.enlighter-default .enlighter-toolbar .enlighter-btn-window::after{content:"\f1b2"}.enlighter-origin{display:none!important}.enlighter-clipboard{position:absolute;left:0;bottom:0;width:1px;height:1px;overflow:hidden}.enlighter-v-inline{display:inline-block;overflow:inherit;margin:0}.enlighter-v-standard{display:block}.enlighter-v-codegroup{display:block}.enlighter-v-codegroup .enlighter-codegroup-wrapper{position:relative}div.enlighter{width:100%;border-collapse:collapse;border-spacing:0;padding:12px 0;empty-cells:show;min-width:100%;font-size:10px;margin:0;text-indent:0;-webkit-overflow-scrolling:touch;counter-reset:enlighter 0}div.enlighter>div{margin:0;border:solid 0 #fff;list-style:none;font-size:inherit;line-height:1.4;min-height:14px}div.enlighter>div>div{display:table-cell;width:100%;padding-left:10px}div.enlighter>div>div::before{content:" "}span.enlighter{display:inline-block;padding:3px 5px 1px 5px;margin:0 2px 0 2px}.enlighter span{margin:0;padding:0;line-height:inherit;font-size:13px;font-family:inherit}.enlighter-linenumbers div.enlighter>div::before{white-space:nowrap;display:block;display:table-cell;width:45px;min-width:45px;counter-increment:enlighter;content:counter(enlighter,decimal) ".";text-align:right;padding-right:8px}.enlighter-overflow-scroll.enlighter-v-standard .enlighter{overflow-x:auto;word-wrap:normal!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter-codegroup-wrapper{overflow-x:auto;word-wrap:normal!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter>div>div,.enlighter-overflow-scroll.enlighter-v-standard .enlighter>div>div{white-space:pre!important}.enlighter-overflow-scroll.enlighter-v-codegroup .enlighter-raw,.enlighter-overflow-scroll.enlighter-v-standard .enlighter-raw{white-space:pre!important}.enlighter-show-rawcode .enlighter-raw{padding:12px 16px!important;display:block}.enlighter-show-rawcode .enlighter{display:none!important}.enlighter-t-enlighter{color:#555;background:#f8f9fa}.enlighter-t-enlighter.enlighter-hover div.enlighter>div:hover{color:#444;background-color:#fffcd3}.enlighter-t-enlighter div.enlighter>div{color:#aaa}.enlighter-t-enlighter div.enlighter>div.enlighter-special{background-color:#fdf5f0}.enlighter-t-enlighter.enlighter-linenumbers div.enlighter>div::before{border-right:solid 1px #e8e8e8}.enlighter-t-enlighter .enlighter-text{color:#555}.enlighter-t-enlighter .enlighter-c0{color:#99a}.enlighter-t-enlighter .enlighter-c1{color:#99a}.enlighter-t-enlighter .enlighter-c2{color:#99a}.enlighter-t-enlighter .enlighter-c9{color:#9baa8f}.enlighter-t-enlighter .enlighter-k0{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k1{color:#4573f7;font-weight:700}.enlighter-t-enlighter .enlighter-k2{color:#458;font-weight:700}.enlighter-t-enlighter .enlighter-k3{color:#4da0d2;background-color:#f0f0f0}.enlighter-t-enlighter .enlighter-k4{color:#4a9141;font-weight:700}.enlighter-t-enlighter .enlighter-k5{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k6{color:#286491;font-style:italic}.enlighter-t-enlighter .enlighter-k7{color:#286491;font-weight:700}.enlighter-t-enlighter .enlighter-k8{color:#4da0d2}.enlighter-t-enlighter .enlighter-k9{color:#990073;font-weight:700}.enlighter-t-enlighter .enlighter-k10{color:#4a9141;font-style:italic}.enlighter-t-enlighter .enlighter-e0{color:#34068a;font-weight:700}.enlighter-t-enlighter .enlighter-e1{color:#34068a;font-weight:700}.enlighter-t-enlighter .enlighter-e2{color:#009926}.enlighter-t-enlighter .enlighter-e3{color:#286491}.enlighter-t-enlighter .enlighter-e4{color:#ff8c00;font-style:italic}.enlighter-t-enlighter .enlighter-s0{colorLine truncated