CSSテーマを簡単に切り替える方法の詳細な説明

CSSテーマを簡単に切り替える方法の詳細な説明

最近、個人の Web サイトに非常にシンプルなカラー スキーム (テーマ) スイッチャーを追加しました。ウェブサイトのフッターにあるこのシンプルなカラースイッチャーを切り替えて、動作を確認することができます。他の誰かが自分のサイトやプロジェクトにこのような機能を追加しようとしている場合に備えて、その方法を説明する簡単な投稿を書こうと思いました。始めましょう。

html

まず、選択したテーマに基づいてテーマを切り替えるための「ボタン」を含める必要があります。 (注: 必要に応じて、これらをselect要素のoptionsとして作成することもできます)

<div class="color-select">
    <button onclick="toggleDefaultTheme()"></button>
    <button onclick="toggleSecondTheme()"></button>
    <button onclick="toggleThirdTheme()"></button>
</div>

それでおしまい!今のところ、 onclickパラメータについてはあまり心配しないでください。JavaScript を追加するときにこれに戻ります。残っているのは、次のようにデフォルトのテーマ クラスをhtml要素に追加することだけです。

<html class="theme-default">

CS

次に、サイト全体で変更されるカスタム カラー スキームを使用して、2 つの色color-selectボタンのスタイルを設定する必要があります。まずは配色から始めましょう。

これらのテーマをシームレスに切り替えるために、変化するカラーセットを CSS 変数として設定します。

.テーマデフォルト{
   --アクセントカラー: #72f1b8;
   --font-color: #34294f;
}

.テーマ-セカンド{
    --アクセントカラー: #FFBF00;
    --フォント色: #59316B;
}

.theme-third {
    --アクセントカラー: #d9455f;
    --フォント色: #303960;
}

体 {
    背景色: var(--accent-color);
    色: var(--font-color);
}

最後に、ユーザー向けのカラーパレットのスタイルを設定します。

.color-selectボタン{
    -moz-appearance: なし;
    外観: なし;
    境界線: 2px 実線;
    境界線の半径: 9999px;
    カーソル: ポインタ;
    高さ: 20px;
    マージン: 0 0.8rem 0.8rem 0;
    アウトライン: 0;
    幅: 20px;
}

/* 各スウォッチを対応するテーマに合わせてスタイル設定します */
.color-select ボタン:nth-child(1) { 背景: #72f1b8; 境界線の色: #34294f; }
.color-select ボタン:nth-child(2) { 背景: #FFBF00; 境界線の色: #59316B; }
.color-select ボタン:nth-child(3) { 背景: #d9455f; 境界線の色: #303960; }

JavaScript

各スウォッチ ボタンが対応するテーマをトリガーするようにし、最初にメインhtml要素に添付したtheme-defaultクラスを交換する必要があります。また、ユーザーが選択した内容をlocalStorage保存して、ページを再読み込みしたり別のページに移動したりしても選択内容が維持されるようにする必要があります。

// 指定されたテーマ/カラースキームを設定する
関数 setTheme(テーマ名) {
    localStorage.setItem('テーマ', テーマ名);
    document.documentElement.className = テーマ名;
}

// カラーテーマを切り替える
関数toggleDefaultTheme() {
    localStorage.getItem('theme') !== 'theme-default' の場合{
        テーマを設定します('theme-default');
    }
}
関数toggleSecondTheme() {
    localStorage.getItem('theme') !== 'theme-second' の場合{
        テーマを設定します('theme-second');
    }
}
関数トグルサードテーマ() {
    localStorage.getItem('theme') !== 'theme-third' の場合{
        テーマを設定します('theme-third');
    }
}

// 初期読み込み時にすぐにテーマを設定する
(関数 () {
    localStorage.getItem('theme') === 'theme-default'の場合{
        テーマを設定します('theme-default');
    }
    localStorage.getItem('theme') === 'theme-second'の場合{
        テーマを設定します('theme-second');
    }
    localStorage.getItem('theme') === 'theme-third'の場合{
        テーマを設定します('theme-third');
    }
})();

それでおしまい!さて、各テーマ スタイルをどの程度カスタマイズしたいかによって異なります。可能性は無限大です!

CSSテーマを簡単に切り替える方法についての記事はこれで終わりです。CSSテーマの切り替えの詳細については、123WORDPRESS.COMの過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも123WORDPRESS.COMをよろしくお願いいたします。

<<:  MySQLの分離レベルとロックメカニズムの詳細な説明

>>:  HTML文書の基本構造(Webページ作成の基礎知識)

推薦する

Dockerを使用してJenkinsをインストールする方法

目次1. イメージをプルする2. ローカルデータボリュームを作成する3. コンテナを作成する4. J...

Centos7でのSambaサーバー構成(実戦)

サンバの概要Samba は、Linux および UNIX システム上で SMB プロトコルを実装する...

計算プロパティとリスナーの詳細

目次1. 計算されたプロパティ1.1 基本的な例1.2 計算プロパティキャッシュとメソッド1.3 計...

ES6 ループと反復可能オブジェクトの例

この記事では、ES6 の for ... of ループについて説明します。古い方法以前は、JavaS...

Linux で Bash コマンド プロンプトをカスタマイズする方法

序文ご存知のとおり、bash (Bourne-Gain Shell) は、ほとんどの Linux デ...

MySql バッチに挿入するときにデータの重複を避ける方法

目次序文1. ignore を挿入2. 重複キーの更新時3. を置き換える要約する序文Mysql は...

Docker のインストールと構成イメージの高速化の実装

目次DockerバージョンCentOS に Docker エンジンをインストールするシステム要件古い...

WebページでjQueryを参照する方法

CDN(コンテンツ配信ネットワーク)を通じて参照できます。 jQuery は Google と Mi...

Linux サーバーに埋め込まれた ddgs および qW3xT.2 マイニング ウイルスの対処の実践記録

序文仮想通貨の狂気的な投機により、マイニングウイルスは犯罪者が最も頻繁に使用する攻撃方法の 1 つに...

Dockerコンテナのエクスポートとインポートの例

目次DockerコンテナのエクスポートDockerコンテナのインポ​​ートこの記事では主に、コンテナ...

vue プロジェクトで rem を使用して px を置き換える例

目次道具プラグインをインストールするプロジェクトのルートディレクトリに.postcssrc.jsファ...

Linux のさまざまなロックメカニズムの使用方法と違いについて詳しく説明します

序文:この知識を理解する必要がある人は、すでにプロセス間通信とスレッド間通信の基本的な理解を持ってい...

サーバーの購入と初期構築方法

しばらくサーバーいじってなかったけど、やることがなくなったのでモバイルワークスに行って海外サーバーを...

Mysqlアカウント管理の原理と実装方法の詳細な説明

この記事では、例を使用して、MySQL アカウント管理の原則と実装方法を説明します。ご参考までに、詳...