这个页面模拟了一个风格化的网站(蓝色主题),用来对比两种深色模式方案。
这是一个白色背景的卡片,有浅灰色边框。在深色模式下,它会变成深灰蓝背景。
里面的 inline code 是红色,会变成浅红色。
| 方案 | 优点 | 缺点 |
|---|---|---|
| 固定配色 | 稳定可控 | 忽略原页面风格 |
| 动态计算 | 适配任何配色 | 首次生成略耗时 |
// 动态计算深色模式颜色
function convertToDark(color) {
const hsl = rgbToHsl(color);
// 背景:亮度翻转并压缩到暗色域
hsl.l = 100 - hsl.l; // 翻转
hsl.l *= 0.25; // 压缩到深色
return hslToRgb(hsl);
}
这是一个 蓝色链接,深色模式下保持蓝色调但变亮。
1. 读取原色:用 getComputedStyle 读取每个元素当前的背景色、文字色、边框色。
2. 色彩空间转换:把 RGB 转成 HSL(色相/饱和度/亮度)。
3. 智能映射:
4. 写回样式:生成 CSS 规则,通过属性选择器匹配原色。