次に、他のすべてのスクリプトを、
終了タグの直前にレンダリングをブロックしない方法に移動します。
最後に、js/index.js ファイルで次のコードを使用します:
const elToggleTheme = document.querySelector(\\'#dark-mode-button input[type=\\\"checkbox\\\"]\\');elToggleTheme.checked = localStorage.theme === \\\"dark\\\";elToggleTheme.addEventListener(\\\"change\\\", () => { const theme = elToggleTheme.checked ? \\\"dark\\\" : \\\"light\\\"; setTheme(theme);});
この解決策を実装すると、白いちらつきを防ぎ、ページのリロード時にライト モードとダーク モードの間でシームレスに移行できるようになります。
","image":"http://www.luping.net/uploads/20241114/173159245067360102b4960.jpg","datePublished":"2024-11-14T22:37:00+08:00","dateModified":"2024-11-14T22:37:00+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
ダーク モードの再読み込みによる白いちらつきの問題
永続化のためにローカル ストレージを利用するダーク モード機能を実装する場合、直面する一般的な問題は次のとおりです。ページをリロードすると白い背景がちらつきます。これは、通常、DOM パーサーがダーク モード スタイルが適用される前にページをレンダリングするために発生します。
解決策: ページ レンダリングをブロックする
この問題を解決するには、ページをブロックします。ドキュメントの
内に配置された小さなスクリプトを使用してレンダリングします。このスクリプトは、 要素に data-theme 属性を設定し、ページのレンダリングを続行します。次のスクリプトを
内で他のタグの前に配置します:
次に、他のすべてのスクリプトを、 終了タグの直前にレンダリングをブロックしない方法に移動します。
最後に、js/index.js ファイルで次のコードを使用します:
const elToggleTheme = document.querySelector('#dark-mode-button input[type="checkbox"]');
elToggleTheme.checked = localStorage.theme === "dark";
elToggleTheme.addEventListener("change", () => {
const theme = elToggleTheme.checked ? "dark" : "light";
setTheme(theme);
});
この解決策を実装すると、白いちらつきを防ぎ、ページのリロード時にライト モードとダーク モードの間でシームレスに移行できるようになります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3