陸地に戻ろう。ブログを昼から夜へと切り替えるために、アイランドは不要!
インタラクティブな要素のためにAstroアイランドを作成できるようになりましたが、素のJavaScriptとCSSだけでもかなりのことができます!
新たな<script>
タグを使用して、ユーザーがライトモードとダークモードを切り替えるためのクリック可能なアイコンを作成しましょう。フレームワークのJavaScriptをブラウザには送信する必要はありません。
ここで学ぶことは…
- JavaScriptとCSSだけでインタラクティブにテーマを切り替える
- ブラウザに送信するJavaScriptをできるだけ少なくする!
テーマを切り替えるアイコンを追加してスタイルを設定する
-
src/components/ThemeIcon.astro
に新しいファイルを作成し、次のコードを貼り付けます。 -
アイコンがすべてのページに表示されるように、
Header.astro
に追加します。コンポーネントをインポートするのを忘れないでください。 -
ブラウザのプレビューで
http://localhost:4321
にアクセスし、すべてのページにアイコンが表示されていることを確認します。クリックしてみても構いませんが、まだこれをインタラクティブにするためのスクリプトを書いていないため、何も起こりません。
ダークテーマのためのCSSスタイルを追加する
ダークモードで使用するための代替色を選択します。
-
src/styles/global.css
にダークスタイルを定義します。独自のものを使ってもいいですし、以下をコピーして貼り付けても構いません。
クライアントサイドのインタラクティブな機能を追加する
Astroコンポーネントにインタラクティブな機能を追加するには、<script>
タグを使用します。以下のスクリプトは、localStorage
から現在のテーマをチェックあるいは設定し、またアイコンがクリックされたときにテーマを切り替えます。
-
src/components/ThemeIcon.astro
の<style>
タグの後ろに、以下の<script>
タグを追加します。 -
ブラウザのプレビューで
http://localhost:4321
を開き、テーマアイコンをクリックします。ライトモードとダークモードが切り替わることを確認してください。
確認テスト
以下の各文が説明しているのは、Astroの<script>
タグ、UIフレームワークのコンポーネント、あるいはその両方でしょうか。適切な選択肢を選んでください。
-
ウェブサイトにインタラクティブなUI要素を含めることができます。
-
ブラウザにJavaScriptを送信して実行する
client:
を使わなければ、サイトに静的な要素を作成します。 -
新しいフレームワークを、その技術スタックを使った新しいプロジェクトを作成することなく「試す」ことができます。
-
他のフレームワークで書いたコードを再利用でき、多くの場合、そのままサイトに配置するだけで済みます。
-
他のJavaScriptフレームワークを知らなくても、インタラクティブな機能を追加できます。