为什么做这个主题
试过不少 Hugo 主题——PaperMod、Stack、Even、Cactus——好看的不够快,够快的不够好看。我想要一个真正极简的主题:等宽字体、暖色调、零框架依赖,改 3 个 CSS 变量就能换整套配色。
于是有了 soneBlog Theme。
设计理念
好的设计是隐形的。读者应该专注于内容,而不是装饰。
soneBlog 的设计原则:
- 减法优先 — 没有花哨的动画、没有多余的阴影、没有视觉噪音
- 自然舒适 — 暖色调底色、充足的留白、舒适的行高
- 等宽字体 — JetBrains Mono 贯穿全站,技术博客的气质
- 一致性 — 每个元素的交互反馈都保持克制和统一
核心特性
HSL 3 变量色彩系统
整个主题的配色由 3 个 CSS 变量控制:
| |
所有文字颜色、边框、背景都是自动推导的。改这 3 个值,整站配色联动。
想要暖色纸张感?--bg-h: 40; --bg-s: 20%; --bg-l: 97%
想要冷色科技感?--bg-h: 210; --bg-s: 15%; --bg-l: 98%
想要纯白极简?--bg-h: 0; --bg-s: 0%; --bg-l: 100%
链接填充动效
文章内的超链接底部有一条细线,鼠标悬停时强调色从底部向上填充整个文字,形成反色高亮效果。外部链接带有 ↗ 箭头标识,hover 时箭头微微偏移。
纯 CSS 实现,基于 background-size 动画,流畅自然。
搜索弹窗
点击导航栏的搜索图标(或按 Ctrl/Cmd+K),弹出全屏搜索浮层。输入关键词按回车搜索,点击空白处或按 Esc 关闭。
基于 Fuse.js 客户端全文搜索,无需后端。
纯 CSS 动效
- 页面元素淡入上浮(微幅 6px,快速 0.35s)
- 暗色模式切换平滑过渡(0.4s)
- Sticky header 毛玻璃效果
- 所有交互反馈保持克制 — 仅颜色变化,无位移和缩放
全部 CSS transition / @keyframes,零 JS 动画库。
代码复制 + 语言标签
代码块右上角显示复制按钮,左上角显示语言名称:
| |
| |
| |
归档页
分类、标签、时间线三合一的归档页面:
- 分类 — 网格卡片,带文章占比进度条
- 标签 — 紧凑流式云,虚线边框
- 时间线 — 按年份分组,左侧竖线连接
更多功能
- 阅读进度条 — 页面顶部强调色细线
- 返回顶部 — 滚动后出现,圆形按钮
- 可折叠目录 —
<details>实现 - 面包屑导航 — 带 JSON-LD 结构化数据
- Hero 卡片 — 首页最新文章大卡片展示
- 文章卡片 — 缩略图 + 元信息 + 摘要
- SEO — Open Graph、Twitter Cards、JSON-LD(BlogPosting、BreadcrumbList、CollectionPage)
- AI 爬虫屏蔽 — robots.txt 屏蔽 30+ AI 爬虫
- 百度 SEO — 专用百度 sitemap
- Fuse.js 搜索 — 客户端全文即时搜索(弹窗式)
- CJK 优化 — 中文排版友好,行高 1.9
- 暗色模式 — 跟随系统偏好,localStorage 持久化
快速开始
方式一:Git Submodule
| |
在 hugo.yaml 中:
| |
方式二:Hugo Module
| |
在 hugo.yaml 中:
| |
最小配置
| |
文件结构
soneblog-theme/
├── assets/
│ ├── css/main.css # 全部样式
│ └── js/ # 3 个 vanilla JS 文件
│ ├── theme.js # 暗色模式切换
│ ├── code-copy.js # 代码复制 + 回到顶部 + 阅读进度
│ └── search.js # 搜索弹窗 (Fuse.js)
├── layouts/
│ ├── _default/ # 基础模板
│ ├── partials/ # 组件 (head, header, footer, breadcrumb)
│ ├── index.html # 首页
│ └── 404.html # 404 页面 (ASCII art)
├── static/fonts/ # JetBrains Mono WOFF2
├── theme.toml
└── LICENSE # MIT
技术细节
| 指标 | 数值 |
|---|---|
| CSS 文件 | 1 个 |
| JS 文件 | 3 个 |
| 外部依赖 | 0(Fuse.js 通过 JSON output 集成) |
| 字体 | JetBrains Mono(自托管 WOFF2) |
| CSS 框架 | 无 |
| JS 框架 | 无 |
开源
MIT 协议,随意使用、修改、分发。
如果对你有帮助,欢迎 Star。
GitHub: upgiorgio/soneblog-theme