「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ユーザーエクスペリエンスを向上させるためにネイティブのカラースキーム設定をオーバーライドするにはどうすればよいですか?

ユーザーエクスペリエンスを向上させるためにネイティブのカラースキーム設定をオーバーライドするにはどうすればよいですか?

2024 年 11 月 10 日に公開
ブラウズ:520

How to Override the Native Color-Scheme Setting for a Better User Experience?

ネイティブ カラー スキーム設定のオーバーライド

ダーク モードの実装は、さまざまなオペレーティング システムで広く採用されていることから重要になっています。 CSS メディア ルール @media (prefers-color-scheme: dark) を通じてネイティブ ブラウザーのサポートが存在しますが、ユーザーの好みに完全に対応していない場合や、Microsoft Edge などのサポートされていないブラウザーに対応していない可能性があります。

システム設定の分離ウェブサイトのテーマから

最適なユーザー制御を提供するには、ユーザーがシステムのカラースキーム設定をオーバーライドできるようにすることが重要です。これにより、特定の Web サイトで好みのテーマを選択できるようになります。これを実現するには、CSS 変数と JavaScript の組み合わせが利用されます。

CSS 構成

CSS 変数はテーマ パラメータを定義します:

:root {
  --font-color: #000;
  --link-color: #1C75B9;
  --link-white-color: #fff;
  --bg-color: rgb(243,243,243);
}

[data-theme="dark"] {
  --font-color: #c1bfbd;
  --link-color: #0a86da;
  --link-white-color: #c1bfbd;
  --bg-color: #333;
}

柔軟性を確保するために、スタイルシート全体で変数が使用されます。

body {
  color: #000;
  color: var(--font-color);
  background: rgb(243,243,243);
  background: var(--bg-color);
}

JavaScript の実装

JavaScript は、ユーザーの好みの検出とテーマ間の切り替えにおいて重要な役割を果たします。

function detectColorScheme() {
  let theme = "light";

  if (localStorage.getItem("theme") == "dark") {
    theme = "dark";
  } else if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
    theme = "dark";
  }

  if (theme == "dark") {
    document.documentElement.setAttribute("data-theme", "dark");
  }
}

detectColorScheme();

toggleTheme 関数はテーマの切り替えを処理します:

function switchTheme(e) {
  if (e.target.checked) {
    localStorage.setItem('theme', 'dark');
    document.documentElement.setAttribute('data-theme', 'dark');
  } else {
    localStorage.setItem('theme', 'light');
    document.documentElement.setAttribute('data-theme', 'light');
  }  
}

この JavaScript はテーマの自動検出を保証し、ユーザーがチェックボックスでテーマをオーバーライドできるようにします:

結論

CSS 変数と JavaScript を組み合わせることで、システム設定に関係なく、ユーザーが Web サイトの配色を制御できるようになります。 。このアプローチにより、ユーザー エクスペリエンスが強化され、個人の好みやさまざまなブラウザーの制限に対応できます。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3