回到干燥的陆地。让你的博客从白天到黑夜,无需岛屿!
既然你已经能够为交互元素构建 Astro 岛屿,别忘了仅仅使用原始的 JavaScript 和 CSS 就能走得很远!
让我们构建一个可点击的图标,让用户可以在浅色模式和深色模式之间切换,使用另一个 <script>
标签来实现交互性,而无需将任何框架的 JavaScript 发送到浏览器中。
准备好…
- 仅使用 JavaScript 和 CSS 构建一个交互式主题切换功能
- 尽可能减少发送到浏览器的 JavaScript 代码量!
添加和样式化主题切换图标
段落标题 添加和样式化主题切换图标-
在
src/components/ThemeIcon.astro
中创建一个新文件,并将以下代码粘贴到其中: -
将图标添加到
Header.astro
中,以便它在所有页面上显示。不要忘记导入该组件。 -
访问
http://localhost:4321
上的浏览器预览,查看图标是否出现在所有页面上。你可以尝试点击它,但你还没有编写脚本使其具有交互性。
添加用于暗黑主题的 CSS 样式
段落标题 添加用于暗黑主题的 CSS 样式选择一些用于暗黑模式的替代颜色。
-
在
global.css
中定义一些暗黑样式。你可以选择自己的样式,或者复制粘贴以下代码:
添加客户端交互性
段落标题 添加客户端交互性要为 Astro 组件添加交互性,你可以使用 <script>
标签。该脚本可以从 localStorage
中检查和设置当前主题,并在单击图标时切换主题。
-
在
src/components/ThemeIcon.astro
的<style>
标签后面添加以下<script>
标签: -
检查
http://localhost:4321
上的浏览器预览,并单击主题图标。验证是否可以在浅色和暗黑模式之间进行切换。
检验你的知识
段落标题 检验你的知识选择下列每个陈述描述的是 Astro <script>
标签、UI 框架组件还是两者都是。
-
它们允许你在网站上包含交互式 UI 元素。
-
除非你包含一个 client: 将它们的 JavaScript 发送到客户端并在浏览器中运行,否则它们会在你的网站上创建静态元素。
-
它们允许你在不需要使用该技术栈启动全新项目的情况下,「尝试」新的框架。
-
它们使你能够复用在其他框架中编写的代码,你通常可以将它们直接放入你的网站中。
-
它们能够让你在不需要了解或学习其他 JavaScript 框架的情况下,添加交互性。