prefers-color-scheme 深色模式与系统主题适配概述`prefers-color-scheme` 允许依据用户系统主题自动切换配色,配合手动开关与存储实现一致体验。核心概念与参数媒体查询:`@media (prefers-color-scheme: dark)` 应用深色主题。手动覆盖:使用 `data-theme` 或类名显式切换。特性检测:`matchMedia('(prefers-color-scheme: dark)').matches`。实践示例<style> :root { color-scheme: light dark; } @media (prefers-color-scheme: dark) { :root { --bg: #0b0f14; --fg: #edf2f7; } body { background: var(--bg); color: var(--fg); } } </style> <button id="toggle">切换主题</button> <script> const saved = localStorage.getItem('theme'); if (saved) document.documentElement.dataset.theme = saved; document.getElementById('toggle').onclick = () => { const next = document.documentElement.dataset.theme === 'dark' ? 'light' : 'dark'; document.documentElement.dataset.theme = next; localStorage.setItem('theme', next); }; }; </script> 验证方法一致性:系统切换与手动切换互不冲突;元素配色统一。对比度:确保文本与背景对比度合规(WCAG AA)。持久化:刷新后保持用户选择。注意事项使用 `color-scheme` 提示 UA 选择合适默认样式(表单控件等)。在动态图表等区域考虑暗色下的可辨识性。避免仅以颜色传达信息,提供形状与文本辅助。

发表评论 取消回复