kwgt 日夜条件自动切换 两套布局随时间变
核心函数:dn
$dn$ 是 kwgt 内置的"夜间模式"布尔函数:
- 系统暗色模式开 →
dn = true - 系统暗色模式关 →
dn = false
把它放进 if 函数里,所有地方都能自动切换。
切换什么
1. 颜色配色(最常见)
$if(dn, '#FFFFFF', '#000000')$
文字颜色 → 夜间白(适合深色壁纸),日间黑(适合浅色壁纸)。
$if(dn, '#1C1C1C', '#F2F2F2')$
卡片背景色 → 夜间深灰,日间浅灰。
2. 元素隐藏 / 显示
用 Opacity 字段:
$if(dn, 100, 0)$
某个夜间才出现的装饰元素 → 日间完全透明隐藏,夜间显示。反过来也可以。
3. 完全不同的布局
做法:
- 设计一套"日间版"元素组
- 设计一套"夜间版"元素组
- 两组都放在同一画布上,重叠位置
- 日组 Opacity =
$if(dn, 0, 100)$ - 夜组 Opacity =
$if(dn, 100, 0)$
系统切换暗色模式的瞬间,整组元素一起切换。
4. 背景图切换
Root 层背景图:
$http( $if(dn, 'https://example.com/night.jpg', 'https://example.com/day.jpg'), 3600 )$
进阶:按时间切(不依赖系统暗色模式)
如果你想按固定时间切,不用 dn,改用时间判断:
$if(tc(h) >= 22 || tc(h) < 7, '#1C1C1C', '#F2F2F2')$
22:00 - 次日 7:00 → 夜间深色;其他时间 → 日间浅色。
切换 vs 两套预设
- 条件切换:一套画布内用 if + dn 自动变 → 优点是自然,系统切模式的瞬间就变
- 两套预设手动切:做两个独立 .kwgt,Touch 加 Toggle Preset → 适合差异特别大、不想在一套里堆太多元素的情况
新手建议先从条件切换练起,理解 dn + if + Opacity 这套组合。