夜间模式下卡片背景的自定义 —— 让图片和颜色不突兀
问题:夜间模式下卡片还是白底
切换到夜间模式后,AnkiDroid 的活动栏、导航抽屉、按钮等系统 UI 会立刻变成暗色主题。但卡片内容的渲染方式由笔记模板里的 CSS 决定——如果你的模板里写了 background: #fff(白色背景),那张卡片在夜间模式下还是白底黑字。
这会很突兀,甚至比不开夜间模式更伤眼。
方案一:AnkiDroid 的"反转卡片颜色"开关(最快)
AnkiDroid 某些版本在设置里提供一个全局开关:反转卡片颜色(Invert card colors)。打开后:
- 不管模板 CSS 写了什么
- AnkiDroid 在渲染卡片时强制把背景和文字颜色反转
- 白底黑字 → 黑底白字
- 图片会被反转(变成负片效果)
优点:一键生效,不用改任何模板。缺点:图片也被反转(比如白色 logo 变成黑色、照片变成负片),观感不总是好。
适合:绝大多数卡片都是纯文字、图片很少的牌组。
方案二:改模板 CSS(最彻底)
在桌面版 Anki 上编辑每个笔记类型的模板 CSS,让颜色跟随 Anki 的主题变量。
Anki 模板支持的主题相关 CSS 变量:
| 变量 | 含义 |
|---|---|
--bg | 卡片背景色(日间白,夜间自动变黑) |
--fg | 卡片前景色(文字颜色,日间黑,夜间自动变浅色) |
模板 CSS 改法:
.card {
background: var(--bg);
color: var(--fg);
}
改完后:
- 日间模式下
--bg= 白,--fg= 黑 - 夜间模式下
--bg= 深灰,--fg= 浅色 - 自动切换,不用手动干涉
这个方案是根本解,一次改好后永远生效。但需要注意:
- 每个笔记类型的模板都要改一遍("基础"、"Cloze"、"日语假名覆盖"各有各的模板)
- 模板里如果有
background-image(背景图),var(--bg)不会覆盖它 - 改完同步到手机 → 立即生效
方案三:针对某类图片卡单独处理
如果你的牌组里有大量图片卡片(比如地理地形、人体解剖、图片记忆),图片在夜间模式下被反转会很难看。
常见做法:
- 夜间模式下接受图片反转——对解剖图、流程图影响不大(只是颜色反了,形状还看得清)
- 关掉反转(如果你用方案一的反转卡片颜色)——白天切回来
- 模板里给图片加样式——
img { max-width: 100%; }但不做颜色反转,让图片保持原样
怎么看当前主题下的变量值
在桌面版 Anki(23.10+)里,可以在「检查数据库 → 查看主题」里看到当前主题变量的实际值。手机上 AnkiDroid 不支持查看,但改完 CSS 同步到手机后切夜间模式就能看到效果。
不推荐的做法
- 不要为夜间模式复制一份笔记类型(比如"基础-夜间版"),维护成本太高
- 不要硬编码两套卡片(一套给白天一套给晚上),学习历史会分裂
- 不要指望 AnkiDroid 自动覆盖模板里的硬编码颜色(目前不支持)