核心价值尊重用户深色偏好,提供自动与手动切换并保持可读性。用 OKLCH 定义色阶与主题变量,确保在暗色环境下对比度与色调稳定。基础变量与媒体查询:root { color-scheme: light dark; }

:root {

--bg: oklch(98% 0 0);

--fg: oklch(20% 0 0);

--accent: oklch(60% 0.1 260);

}

@media (prefers-color-scheme: dark) {

:root {

--bg: oklch(15% 0 0);

--fg: oklch(92% 0 0);

--accent: oklch(70% 0.12 250);

}

}

组件应用.card { background: var(--bg); color: var(--fg); border: 1px solid color-mix(in oklch, var(--fg) 20%, transparent); }

.btn { background: var(--accent); color: var(--bg); }

手动切换与持久化const root = document.documentElement

const current = localStorage.getItem('theme')

if (current) root.dataset.theme = current

document.getElementById('toggle')?.addEventListener('click', () => {

const next = root.dataset.theme === 'dark' ? 'light' : 'dark'

root.dataset.theme = next

localStorage.setItem('theme', next)

})

:root[data-theme="dark"] {

--bg: oklch(15% 0 0);

--fg: oklch(92% 0 0);

--accent: oklch(70% 0.12 250);

}

治理建议保持文本与背景之间足够对比度(参考 WCAG AA),暗色模式避免纯黑/纯白导致眩光。对交互元素使用 `:focus-visible` 与清晰的焦点环,确保低亮环境下的可发现性。结合 `prefers-reduced-motion` 对动效降级,避免暗背景下的大面积动画造成疲劳。结论通过 `prefers-color-scheme` 与 OKLCH 的协同,主题在不同亮度环境下保持色彩一致性与可读性,用户体验更加稳健且可自定义。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部