最近给自己的博客做了一个新主题 —— XU81。设计理念很简单:极客、终端、科幻、文字冒险游戏

设计灵感

作为一个从 DOS 时代过来的程序员,我对黑色屏幕上的绿色文字有着特殊的感情。那种敲击键盘、看着字符一个一个蹦出来的感觉,是现代花哨 UI 永远无法替代的。

所以这个主题融合了几个我喜欢的元素:

  • 终端 (Terminal) - 复古的命令行界面风格
  • 赛博朋克 (Cyberpunk) - 霓虹灯、发光效果
  • Matrix - 经典的数字雨动画
  • MUD - 文字冒险游戏的 ASCII 艺术风格

主题特性

1. CRT 显示器效果

模拟老式 CRT 显示器的扫描线和屏幕弯曲:

 1/* 扫描线叠加 */
 2body::before {
 3    background: repeating-linear-gradient(
 4        0deg,
 5        rgba(0, 255, 65, 0.03),
 6        rgba(0, 255, 65, 0.03) 1px,
 7        transparent 1px,
 8        transparent 2px
 9    );
10}

2. Matrix 数字雨

基于 Canvas 的实时动画,字符从上往下掉落。使用的字符集包括片假名、数字和符号:

1const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZアイウエオカキクケコ...';

3. 四种配色主题

主题 配色 风格
MTRX 绿色 (#00ff41) 经典 Matrix
CYBR 青色 + 品红 赛博朋克霓虹
AMBR 琥珀色 (#ffb000) 复古终端
LITE 蓝色 明亮模式

快捷键 Alt + T 可以快速切换主题。

4. 霓虹发光效果

链接、标题、边框都有发光效果,悬停时增强:

1text-shadow: 0 0 10px #00ff41, 0 0 20px #00ff41, 0 0 30px #00ff41;

用 ASCII 字符画出的 XU81 标志,配合终端命令行风格的装饰:

$ cat /etc/xu81/banner.txt

██╗  ██╗██╗   ██╗███╗   ██╗ ██████╗ ██████╗  ██████╗
██║ ██╔╝██║   ██║████╗  ██║██╔════╝██╔═══██╗██╔════╝
█████╔╝ ██║   ██║██╔██╗ ██║██║     ██║   ██║██║  ███╗
██╔═██╗ ██║   ██║██║╚██╗██║██║     ██║   ██║██║   ██║
██║  ██╗╚██████╔╝██║ ╚████║╚██████╗╚██████╔╝╚██████╔╝
╚═╝  ╚═╝ ╚═════╝ ╚═╝  ╚═══╝ ╚═════╝ ╚═════╝  ╚═════╝

技术栈

  • 模板引擎: Hugo Go Templates
  • 样式: 纯 CSS(无框架)
  • 脚本: 原生 JavaScript
  • 字体: Fira Code + Source Code Pro(等宽字体)

响应式设计

在移动端会自动调整:

  • ASCII Logo 缩小
  • 导航栏折叠
  • 字体大小优化

使用方法

在你的 Hugo 配置文件中设置:

1theme = 'xu81'
2
3[params]
4  dateFormat = "2006-01-02"
5  subtitle = "你的博客副标题"

源码

主题文件位于博客的 themes/xu81 目录下,结构如下:

themes/xu81/
├── layouts/
│   ├── _default/
│   │   ├── baseof.html
│   │   ├── list.html
│   │   ├── single.html
│   │   └── summary.html
│   ├── partials/
│   │   ├── header.html
│   │   ├── footer.html
│   │   ├── pagination.html
│   │   └── theme-toggle.html
│   └── index.html
├── static/
│   ├── css/style.css
│   └── js/theme-toggle.js
└── theme.toml

如果你也喜欢这种风格,欢迎 Fork 修改。毕竟,每个人的终端都应该有自己的配色方案。

root@xu81:~# echo "Happy Coding!"