与买桂花同载酒 🌙

配色方案

在聊配色之前,先搞清楚一个很多人从没想过的问题:你手机屏幕上的颜色,和画纸上的颜色,其实不是同一回事。屏幕是发光的——在完全黑暗的房间里,每个像素点是三盏小灯泡(红、绿、蓝),往你眼睛里灌光。开一盏红灯加一盏绿灯,叠出黄色;三盏全开,叠出白色。光越加越亮,加到头就是白,这叫加法混色。画纸正好相反——白光照在白纸上,你涂一层黄色颜料,黄色把蓝色光吸收掉了,只剩红色和绿色反射进你的眼睛。再涂一层品红,又把绿色光吸收掉。颜料越涂越厚,能反射的光越来越少,涂到头就是黑色,这叫减法混色。一个是往黑暗里加光,一个是从白光里减光,方向完全相反,所以屏幕的三原色(红绿蓝)和颜料的原色(青品黄)不一样。

理解了这个,后面所有配色参数就都好懂了。色相就是”这是什么颜色”——在彩虹上指一个位置,红、橙、黄、绿、青、蓝、紫,各是一个色相。饱和度就是”颜色有多纯”——同样是红色,正红很鲜艳,加了白变成粉红就不那么鲜艳了,再加白变成浅粉就更淡了。亮度就是”颜色有多亮”——天空蓝很亮,深海蓝很暗,但它们都是蓝色。灰度就是”从白到黑有多深”——跟颜色无关,纯粹是黑白之间的刻度。透明度就是”颜色透不透得出来”——一面灰墙上打一盏粉色的灯,墙本身还是灰的,只是被灯光染了一层粉,灰墙的纹理还透得出来。如果把透明度拉满,底子就完全被盖住了,那就不叫透明了,那叫直接刷了一层有色油漆。这五个参数叠在一起,就是你眼睛看到的最终效果。

给博客换一套衣服,远不是把红色换成蓝色那么简单。真正的色调切换,是让整个页面”呼吸”的空气都变了——背景在发光,侧栏在沉浸,文字在呼吸。这篇文档记录了 Zebin-Theme 主题的完整配色体系,包括五种可选色调、Tailwind 灰度层级,以及让色调”活起来”的渐变渲染手法。

整个站点的颜色由一套 CSS 变量驱动,核心变量分为背景色、文字色、边框阴影色,以及最重要的强调色和它的 RGB 拆分版。强调色直接控制链接、按钮、标签等一切需要”跳出来”的元素颜色;而 RGB 拆分版则被巧妙地喂给透明度函数,通过不同透明度来渲染背景光晕、侧栏色调、内容区渐变,这样切换色调时不需要改几十个地方,只换两个变量,整个站点的”氛围”就跟着变了。

五种色调预设各有性格。明亮模式下用更浅、更柔和的版本,暗色模式下用更深、更饱和的版本,这样无论在哪种光线环境下阅读,颜色都不会”刺”眼睛。

色调名称 明亮模式色值 明亮模式 RGB 暗色模式色值 暗色模式 RGB
玫红 温柔粉 240, 132, 154 深玫红 216, 75, 107
蓝调 天空蓝 96, 165, 250 深海蓝 59, 130, 246
紫韵 薰衣草紫 167, 139, 250 葡萄紫 139, 92, 246
暖橙 蜂蜜金 251, 191, 36 焦糖橙 245, 158, 11
青碧 湖水青 34, 211, 238 孔雀蓝 6, 182, 212

灰度层级参考了 Tailwind CSS 的 gray 色板,确保从最亮的白色到最深的黑色之间,每一级灰都有明确的分工。每一层之间刚好隔着一到两个色阶,不会糊在一起,也不会太突兀。

明亮模式灰度体系

用途 色阶 色值 说明
页面底层背景 gray-100 #f3f4f6 最浅的底色,微微发灰
卡片与内容区 纯白 #ffffff 干净的白色画布
按钮背景 浅灰 #f5f5f5 比卡片再暗一点点
按钮悬停 / 边框 gray-200 #e5e7eb 交互反馈的视觉层
正文文字 gray-700 #374151 深灰,阅读舒适
次要信息 gray-400 #9ca3af 日期、标签等低调存在
极度强调文字 gray-900 #111827 接近黑色,只在标题处使用

暗色模式把整个灰度翻转过来,文字方面特别注意了护眼——不用纯白,而是用温和的灰色,避免在大面积暗色背景上出现光晕效应,长时间盯着屏幕也不会累。

暗色模式灰度体系

用途 色阶 色值 说明
页面底层背景 gray-900 #111827 深蓝灰,不刺眼的夜色
卡片与内容区 gray-800 #1f2937 比底色稍浅,区分层次
按钮背景 gray-700 #374151 再浅一级,可交互的暗示
按钮悬停 / 边框 gray-600 / gray-700 #4b5563 / #374151 悬停反馈和分割线
正文文字 gray-300 #d1d5db 温和护眼,不是纯白
次要信息 gray-500 #6b7280 日期标签,低调沉下去
标题强调 gray-200 #e5e7eb 醒目但不刺眼

让色调真正”弥漫”到整个页面的秘密武器是渐变。页面底层叠加了两层径向光晕,一层在左上角,一层在右下角,都使用强调色的低透明度版本来渲染,就像在房间里开了两盏带色调的柔光灯,整个底色会随色调切换而自然变化,但又不至于浓到影响阅读。左右两个侧栏用内阴影从内部向中心扩散色调,透明度比中间栏更高,就像两侧的墙壁被色调浸染了一样。中间内容区从左到右做了一次极其微妙的线性渐变,让色调从侧栏向内容区”流淌”过来,阅读区域依然干净,但能感受到旁边飘来的那一抹色彩。

渲染位置 渲染手法 透明度 效果描述
页面底层(body) 径向渐变,左上 + 右下两处光晕 8% / 5% 整个页面的底色氛围
左右侧栏 内阴影,从边缘向中心扩散 16% 比中间栏更深更沉浸
中间内容区 从左到右的线性渐变 5% 色调从侧栏”流淌”过来
所有卡片外围 外发光阴影 6% 卡片边缘泛着若有若无的光晕

技术上,这套体系的精髓在于把强调色的 RGB 三个通道存成纯数字字符串,然后在 CSS 里通过透明度函数来使用。这意味着只需要改两个变量,几十处引用到强调色的地方就会自动跟着变——按钮颜色变了,标签云颜色变了,侧栏的色调深度变了,底层光晕也变了,一切浑然一体。色调偏好存在本地存储里,页面加载时立即读取并应用,避免切换页面时出现闪烁。切换明暗主题时也会自动同步色调的明暗版本,确保浅色主题配浅色调,深色主题配深色调。