LOADING

如果你不会魔法 这可能会有些慢

2026-07-23 视觉与交互更新

今天对 ParticleX 主题做了一轮「可读性 + 明暗主题 + 交互」改造。这篇用来记录改了什么,并顺带演示新的 Note 组件。

并且由于 ParticleX 主题在我手里已经改了无数版了,于是我决定把我的 ParticleX 独立作为一个新主题,改名为 ParticleXF

hexo-theme-ParticleXF 发布

这才是给人看的博客(

总览

今日重点
  • 柔和深色配色与字体
  • 真正的浅/深双主题(不再靠反色滤镜)
  • TOC、代码块、首页卡片等交互与样式
  • 评论区与星空背景跟随主题
  • 新增多种样式的 Note 提示框

视觉:柔和深色 + 护眼排版

页面底色从纯黑改为暖调墨绿灰,正文对比度适中,卡片用弱阴影而不是刺眼亮边。

  • 正文字体:Noto Sans SC(思源黑体)
  • 代码字体:Fira Code
  • 字号约 16–17px,行高约 1.8
为什么不是纯黑?

纯黑 #000 + 高对比文字长时间阅读更容易疲劳。柔和深色底能保留「夜间友好」,又比反色滤镜自然。


明暗主题切换

去掉 darkmode-js 的全局反色,改为 CSS 变量双主题:

模式 观感
深色(默认) 柔和墨绿深色
浅色 暖米色「纸感」
  • 顶栏最右侧 ☀ / ☾ 切换
  • 选择写入 localStorage.theme
  • 首屏有防闪脚本,减少白屏/错主题一闪
成功

切换主题后,代码高亮星空背景Waline 评论 都会一起变。

星空背景

  • 深色:黑底动态星空(原效果)
  • 浅色:暖米色底 + 淡色星点/星云,避免浅色 UI 底下仍是整屏黑

目录(TOC)

  • 滚动高亮更稳,点击平滑滚动并避开顶栏
  • 当前项会滚进目录可视区
  • 窄屏(≤1200px):右下角「目录」FAB → 侧滑抽屉
  • 标号与标题样式区分(标号更淡、等宽)
  • 滚动条内缩,避免圆角被直角滚动条切坏

文章与代码块

  • 段落/标题/链接/图片间距更舒服
  • 代码块:深色 atom-one-dark-reasonable / 浅色 atom-one-light
  • 长代码可配置自动折叠(默认超过 20 行)

配置示例(themes/particlex/_config.yml):

highlight:
  wrap: true
  collapse:
    enable: true
    lines: 20

下面是一段略长的示例代码(用于看折叠/换行):

// demo: long-ish snippet for collapse
function greet(name = "Florance") {
  const message = [
    "Hello,",
    name,
    "! Welcome to the updated ParticleX theme.",
  ].join(" ");
  console.log(message);
  return {
    ok: true,
    message,
    meta: {
      theme: "soft-dark / soft-light",
      features: ["toc", "notes", "waline", "starfield"],
    },
  };
}

for (let i = 0; i < 8; i++) {
  greet(`Reader-${i}`);
}

// more lines to exceed collapse threshold...
const lines = Array.from({ length: 12 }, (_, i) => `line ${i + 1}`);
console.log(lines.join("\n"));

首页与其它细节

  • 首屏 loop 色调改为薄荷绿/雾蓝系
  • 主题切换按钮固定在顶栏右侧

Waline 评论

  • dark 改为跟随 html[data-theme="dark"]
  • 颜色变量映射到站点 token(背景、文字、强调色)
引用

评论区终于可以和正文一起「开灯 / 关灯」了。


新组件:Note 提示框

Note 已作为 主题脚本 内置:themes/particlex/scripts/note.js

写法

{% note tip %}
正文,支持 **Markdown**。
{% endnote %}

{% note warning 自定义标题 %}
……
{% endnote %}

{% note danger no-icon %}
不显示图标。
{% endnote %}

类型一览

说明

默认 / note:一般说明。

信息

info:补充信息。

提示

tip:技巧与建议。

成功

success:完成、正确路径。

警告

warning:需要注意的点。

危险

danger:风险、错误、破坏性操作。

引用

quote:引用式强调。

提示

no-icon:不显示左侧图标(任意类型都可加)。