FIT2CLOUD
绿野 Luye 的图标

绿野 Luye

2,504
415

深绿玻璃拟态(Glassmorphism)风格的 Halo 2 主题,视觉语言移植自 Ron567 个人主页:雾绿光晕、玻璃卡片、衬线大标题与晴雨雪三种背景粒子特效。

1.1.2
qin 发布于
>=2.26.0

现象

安装并启用 highlight.js 代码高亮 或 Shiki 代码高亮 插件后,代码块的插件配色不生效:代码块背景与文字被压成主题的深绿/浅绿,语法着色几乎看不出来。

根因(CSS 层)

  1. .post-content code
    verify-112-code
    无条件设置了 background:rgba(125,217,166,0.10); color:#A9E8C6——插件注入的 hljs 类代码块同样命中这条规则,插件的整套文字配色被主题绿覆盖。
  2. .post-content pre 设置了 background:#0A1712,插件代码块的背景同样被盖住。
  3. 页面没有向插件声明配色方案,Shiki 这类按页面配色选择暗色高亮主题的插件无法判断该用哪套配色。

修复内容

位置 修复前 修复后
行内/块级代码配色 .post-content code 无条件上色 .post-content code:not(.hljs),绿色仅作未高亮内容的兜底
代码块容器背景 .post-content pre 无条件深绿底 新增 .post-content pre:has(>code.hljs){background:none},已高亮的代码块让出背景
块内代码文字色 .post-content pre code 无条件上色 .post-content pre code:not(.hljs),插件已接管时完全不干预
页面配色声明 无 <html data-color-scheme="dark">,供 Shiki 等插件识别深色外观

行为说明

  • 未安装插件:普通代码块与行内代码仍保持绿野的深绿配色,主题风格不变。
  • 已安装并高亮:code.hljs 的背景与文字色完全由插件主题接管,主题不再干预;语法着色正常显示。
  • 编辑器与前台:主题不会自动同步编辑器配色。使用 Shiki 时,将插件的「编辑器设置 → 高亮主题」与「基本设置 → 暗色主题」设为同一配色。

真机验证

已在 Halo 2.26.0 本机实例上用正式发布包完成验证:

  • 主题升级返回 200,已装版本显示 1.1.2 / READY,布局契约 LayoutTemplateSupported 正常。

  • Halo 实际提供的 style.css(非仅开发态)确认包含全部三条修复规则。

  • 无头浏览器读取计算样式:

    元素 1.1.1(修复前) 1.1.2(修复后)
    pre:has(code.hljs) 背景 rgb(10,23,18)(被主题覆盖) rgba(0,0,0,0)(让出给插件)
    code.hljs 背景 rgba(0,0,0,0) 取插件配色
    code.hljs 文字色 rgb(199,227,210)(主题绿) 取插件配色
    未高亮 pre 背景 rgb(10,23,18) rgb(10,23,18)(兜底不变)

    对照实验直接证明:同一段 HTML 加载两个版本的 CSS,1.1.2 确实把配色让给了插件,而未高亮代码块的主题绿兜底不受影响。

  • document.documentElement 的 data-color-scheme 读取为 dark。

  • 全路径扫描全部正常:首页、分页、归档、分类、标签、文章详情(含代码块验证页)、作者页均返回 200,404 页返回 404。

兼容性

Halo >= 2.26.0,与前序版本一致。CSS 使用了 :has() 选择器,现代浏览器均已支持(Halo 后台与主流现代浏览器环境无兼容问题)。

升级方式

  1. 下载本 Release 附件中的 theme-luye-1.1.2.zip
  2. Halo 后台 → 外观 → 主题 → 找到「绿野 Luye」→ 升级 → 上传 zip
  3. 主题设置保存在 ConfigMap 中,升级不会丢失配置

若升级后代码块仍显示旧样式,请强制刷新浏览器(Ctrl/Cmd + F5)清除缓存的 CSS。

资源下载

  • theme-luye-1.1.2.zip