我们为什么需要一个新主题?

2026 年,Hugo 生态里已经有数百个主题。但翻开它们,大多数长着同一张脸:左侧导航、白色背景、蓝色链接。它们很好,只是不够——不够让每一次打开博客变成一种期待。

我想要的是,每次打开页面时,像推开一扇通往另一个世界的门。

于是有了幻梦

名字的由来

“幻梦”——既是"梦幻",也是"幻觉"。前者是视觉追求,后者是一种自嘲:在短视频称王的时代,还在认真做一个博客主题,大概确实是一种幻觉。

但总有人还愿意读长文,还喜欢在深夜里对着代码发呆,还会为一个毛玻璃效果的模糊半径纠结半小时。这个主题就是为他们做的。

三个核心问题

在设计幻梦的过程中,我反复问自己三个问题:

1. 阅读体验能有多沉浸?

答案藏在细节里:暖色调的浅色模式让长时间阅读不刺眼,深色模式减少蓝光,合适的行高和字间距让中文排版不再拥挤,JetBrains Mono 让代码块赏心悦目。

2. 技术实现能有多优雅?

一个 data/theme.yaml 管理所有页面内容,一个 main.scss 承载全部样式设计,一个 main.ts 驱动所有交互逻辑。没有复杂的构建工具链,没有数百个 npm 依赖。Hugo 原生的 Dart Sass 编译和 js.Build 就足够了。

3. 交互能有多有趣?

Canvas 粒子系统昼夜自动切换——白天是缤纷的糖果雨,夜里是静谧的星空和萤火虫。卡片会跟随鼠标微微倾斜。滚动时元素优雅地淡入。这些不是花里胡哨,是让你在浏览时嘴角微微上扬的小惊喜。

技术选型

// 幻梦的技术栈极其克制
const stack = {
  generator:   "Hugo (Go templates)",
  styling:     "SCSS → Hugo Dart Sass (~6200 lines)",
  scripting:   "TypeScript → Hugo js.Build (~1800 lines)",
  animation:   "AOS.js + Typed.js (CDN, local fallback)",
  icons:       "Font Awesome 6 (CDN, auto-fallback)",
  fonts:       "Inter + Noto Sans SC + JetBrains Mono",
  dependencies: 0  // 零 npm 依赖
};

没有 React、没有 Vue、没有 Webpack。一个 Hugo 主题就该是 Hugo 的样子。

不止是一个主题

幻梦配备了完整的页面体系:关于页的个人介绍和数据统计,技能页的进度条和时间线,友链页的卡片网格和申请表单,工具页的分类推荐,归档页的年月分组导航。

每一个页面都由 data/theme.yaml 驱动,修改一个 YAML 文件就能定制整站。

开源与后续

幻梦以 GPL v3.0 协议开源。接下来的计划:完善英文翻译、接入评论系统、优化移动端体验、降低首次加载时间。

如果你喜欢这个主题,欢迎 star、fork、提 issue。更欢迎你把它变成你自己的样子——毕竟,每一个博客都该有自己的个性。


这个主题叫"幻梦",希望它能让你在数字世界里,做一个温柔的梦。