跳转到内容

ThemeToggle 主题切换

一个圆按钮,在浅色和深色主题之间切换。ThemeScript 放在 <head> 里,页面画出来之前主题就是对的。

每页一个,放在 FloatingControls 里,或者导航的 actions 插槽里。

<head>
<ThemeScript />
</head>
…
<ThemeToggle />

两者默认都用 localStorage 的 ds-theme 这个键。网站有自己的键时,用 storageKey 传给两者。

一个 IconButton,浅色主题下是月亮,深色主题下是太阳:图标表示按下去会变成什么。

状态 会怎样
读者还没选过 跟随系统设置,页面打开时系统设置变了也跟着变
按下 页面上所有颜色在 --motion-entrance 内过渡到另一个主题,并记住这个选择,以后都用它

按钮的名字是 “Switch to dark theme” 或 “Switch to light theme”。两个按钮都写在 HTML 里,由 CSS 显示对的那个,所以第一次绘制时图标就是对的。按下后焦点移到换上来的那个按钮。

ThemeToggle.astro 和 ThemeScript.astro。移植自交付包的图标形式。交付包给的 head 脚本是一段要自己贴进去的代码,Astro 里可以做成组件。带第三个选项“跟随系统”的分段形式在 SettingsMenu 显示设置 里。

主题、FloatingControls 浮动按钮。