わかりました。少し CSS が必要ですが、インターネットで見つけた答えよりもはるかに簡単でした。
私が達成しようとしていることは何ですか?
この方法で 2 つのことを達成しようとしています。
そこで、ユーザーが期待するテーマを読み込んで、必要に応じて変更できるウェブサイトを作成します。
ステップ 1: 切り替えるボタンを作成する
月の SVG 画像を含む画像をボタンとして使用しています。 2 つのオプションを切り替えても問題ないと思われるボタンまたはチェックボックスを追加できます。
ステップ 2: 色の詳細をカスタム プロパティとして CSS に入力します
:root{ color-scheme: light dark; --light-bg: ghostwhite; --light-color: darkslategray; --light-code: tomato; --dark-bg: darkslategray; --dark-color: ghostwhite; --dark-code: gold; } .light{ color-scheme: light; } .dark{ color-scheme: dark; }
わかりました。ルートには color-scheme というプロパティが表示されます。これがゲームチェンジャーになります。
ご覧のとおり、明るい値または暗い値を受け取ります。また、color-scheme の値を dark または light に設定する .light と .dark という 2 つのクラスも作成しました。
ステップ 3: コードのさまざまな部分に色を追加する
body{ background-color: light-dark(var(--light-bg), var(--dark-bg)); }
これで、プロパティ (背景、色のプロパティなど) が色を要求するたびに、light-dark() という関数を使用できるようになります。
この関数は 2 つの値を取ります。1 つ目は color-scheme が light に設定されている場合に使用され、2 つ目の値は color-scheme が dark に設定されている場合に使用されます。
はい...これは2024年5月にリリースされた機能です。かなり新しい機能ですが、すぐに適応される予定です。この記事の執筆時点では、ベースライン サポートが提供されています。ここにそのドキュメントがあります
これを使用すると、CSS が OS からユーザーの好みを自動的に検出し、希望する色に設定します。
最初の目標は達成されました。Web サイトは、ユーザーが OS で既に必要としているカラー モードで読み込まれるようになります。
ステップ 4: Javascript を使用してダーク モードとライト モードを切り替える
// mode is the toggle button mode.addEventListener("click", ()=>{ // we are getting the color scheme here let theme = document.documentElement.style.colorScheme; /* when a website is first loaded it will have null as its color-scheme value*/ if(theme == null){ // this window.matchMedia() checks if the user prefers the dark theme if(window.matchMedia("(prefers-color-scheme:dark)").matches){ /* if they prefer dark, clicking on our button should turn everything to light, the color-scheme will be given a value as light */ document.documentElement.style.colorScheme = "light"; } // Or else the color-scheme will be set to dark document.documentElement.style.colorScheme = "dark"; } /* Now since our toggle button set the color scheme, we can simply change light to dark and dark to light using below code */ else{ document.documentElement.style.colorScheme = (theme == "light")? "dark": "light"; } });
ここで、document.documentElement.style.colorScheme は実際には CSS の :root 要素を参照します。
前のステップでユーザー優先モードで Web サイトを開くことはすでに達成しましたが、ここではトグル ボタンをクリックすると次のジョブが実行されます。
*追記: * これが私の最初の投稿であり、私はまだ Web 開発の初心者です。しかし、この方法を検索しても、それに関する関連記事は見つかりませんでした。すでにご存知の場合は、クリックを誘導して申し訳ありません。この投稿は、新しいプロジェクトに取り組むたびにこのプロセスを思い出すのに役立つと思いました。
Web サイトが古いブラウザーで動作するように作業している場合、この方法は間違いなく適していません。この投稿についてコメント欄で教えてください。読んでいただきありがとうございます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3