現代、数多くのウェブサイトやアプリケーションでは、ダークモードとライトモードの切り替え機能がほぼ必須とされています。この機能はユーザーの視覚を保護し、エネルギーの節約効果と個別のユーザープリファレンスを反映し、全体的なユーザーエクスペリエンスを向上させます。本稿では、ウェブページでCSSを使用してこのテーマ切り替え機能をどのように実装するか、初心者でも追いやすく詳細に説明します。
ウェブページを訪れた際の最初の表示は、主にそのユーザーのシステム設定に基づいています。もしユーザーのオペレーティングシステムやブラウザ設定がダークモードに設定されている場合、そのウェブページもダークモードで表示されるでしょう。これは、ユーザーの好みに合わせてウェブページのスタイルを初期設定するものです。これにより、ユーザーの視疲労を軽減し、より快適なウェブブラウジングの経験を提供できます。この機能を実装するためには、CSSの特別なメディアクエリであるprefers-color-scheme
を使用します。
prefers-color-scheme
とは?prefers-color-scheme
は、ユーザーのシステム設定で好まれる色のテーマ(例:ダークモードまたはライトモード)を検出するためのCSSメディアクエリの特性です。
no-preference
: ユーザーのシステムに特定のテーマの好みがない場合。light
: ライトモードを好む際に適用。dark
: ダークモードを好む際に適用。1. デフォルトでライトモードスタイルを適用
:root {
--primary-font-color: #111827;
--secondary-font-color: #374151;
--bg-color: #f9f9f9;
}
:root
はCSSで文書の最上位要素を指します。これは通常、全体のウェブページに対するデフォルトの値を設定する際に使用されます。--primary-font-color
, --secondary-font-color
, --bg-color
はCSS変数として、ウェブページ全体で使用される色の値を保持しています。2. ダークモードを好む場合のスタイル適用
@media (prefers-color-scheme: dark) {
:root {
--primary-font-color: #ffffff;
--secondary-font-color: #d1d5db;
--bg-color: #181818;
}
}
@media (prefers-color-scheme: dark)
は、ユーザーのオペレーティングシステムまたはブラウザ設定でダークモードを好む場合にのみ適用されるスタイルを定義するメディアクエリです。このCSSコードは、ユーザーのシステム設定に応じてライトモードとダークモードのスタイル切り替えを自動的に行うためのものです。ユーザーがダークモードを好む設定を選択した場合、ダークモードのスタイルが適用され、そうでない場合はデフォルトでライトモードのスタイルが適用されます。
prefers-color-scheme
をサポートしているわけではないので、互換性を考慮して実装する必要があります。ウェブページは、初期モードをユーザーのシステム設定に基づいて設定した後、ユーザーは自分の好みに合わせてモードを変更したい場合があります。例えば、周囲の環境や特定のタスクに応じてダークモードとライトモードの間で切り替えたいユーザーのニーズを満たすことが重要です。このようなユーザー選択に基づくテーマ切替機能は、ウェブページの柔軟性を高め、ユーザーによりカスタマイズされた体験を提供します。これを実現するためには、HTML、CSS、およびJavaScriptを組み合わせて実装することができます。
1. HTML: モード切替ボタンの追加 ダークモードとライトモードを切り替えるボタンやトグルスイッチをウェブページに追加します。
<button id="themeToggle">Dark Mode</button>
2. デフォルトおよびライトモードのスタイル
:root,
[data-theme='light'] {
--primary-font-color: #111827;
--secondary-font-color: #374151;
--bg-color: #f9f9f9;
--divider-color: rgba(0, 0, 0, 0.1);
}
:root
はCSSの最上位要素を意味し、ここで変数を定義することで、全ページのデフォルトスタイルを設定できます。[data-theme='light']
は、data-theme
属性の値が'light'である要素に適用されるスタイルを指します。3. ダークモードのスタイル
[data-theme='dark'] {
--primary-font-color: #ffffff;
--secondary-font-color: #d1d5db;
--bg-color: #181818;
--divider-color: rgba(255, 255, 255, 0.1);
}
[data-theme='dark']
は、data-theme
属性の値が'dark'である要素に適用されるスタイルを指します。4. JavaScript: モード切替のロジック実装
ボタンがクリックされたときにウェブページのテーマが切り替わるように、JavaScriptでロジックを実装します。
const themeToggleButton = document.getElementById('themeToggle');
themeToggleButton.addEventListener('click', function() {
const currentTheme = document.documentElement.getAttribute('data-theme');
if (currentTheme === 'dark') {
document.documentElement.setAttribute('data-theme', 'light');
themeToggleButton.innerText = 'Dark Mode';
} else {
document.documentElement.setAttribute('data-theme', 'dark');
themeToggleButton.innerText = 'Light Mode';
}
});
この設定により、ユーザーが'Dark Mode'ボタンをクリックすると、ウェブページのテーマがダークモードに変わります。逆に、ダークモードで'Light Mode'ボタンをクリックすると、ライトモードに切り替わります。
ウェブページでのダークモードとライトモードの切替は、ユーザーエクスペリエンスを向上させる重要な機能の一つです。この記事を通じて、その機能の実装方法についての基本的な理解を得ることができたことを願っています。ウェブ開発初心者であっても、このガイドラインに従って段階的に進めば、ウェブページに効果的なテーマ切替機能を追加することができます。
[CSS] ダークモードの実装方法 - システム設定ベースとユーザー選択ベースのモード変更 |
---|
[CSS] 仮想セレクタ(Pseudo selector) 完全ガイド - 知っておくべきスタイリング技術 |
JavaScriptとCSSアニメーションの比較 |
[CSS] :not()セレクタで複数のクラスを除外する方法 |
[CSS] 知らなければならないCSSの基本構文10個! |
CloneCoding
1行のコードから始まる革新!