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ページ作成の基礎知識)

推薦する

MySQL 5.7.31 64 ビット無料インストール版チュートリアル図

1. ダウンロードダウンロードアドレス: https://dev.mysql.com/get/Dow...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

CSS で実装された円形のプログレスバー

成果を達成する 実装コードhtml <div class="wrap"&g...

W3C標準に準拠したHTML標準で注意すべき点を詳細に解説

XML/HTML コードコンテンツをクリップボードにコピー<!DOCTYPE html PUB...

MySQL GTID マスターとスレーブの不一致を修復するソリューション

目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...

DockerプライベートライブラリHarborのアーキテクチャとコンポーネントの説明

この記事では、Harbor アーキテクチャの構成と、実行時に各コンポーネントを使用する方法について説...

詳細なハードウェア情報を取得するための Linux のいくつかのコマンドの詳細な説明

Linux システム、特にサーバー システムでは、デバイスのハードウェア情報を表示する必要がよくあり...

MySQL トランザクションの概念と使用法の詳細な説明

目次情事の概念取引の状態取引の役割取引の特徴トランザクション構文トランザクション対応ストレージエンジ...

Vue.jsはシンプルなタイマー機能を実装します

この記事では、参考までに、簡単なタイマー機能を実装するためのvue.jsの具体的なコードを紹介します...

nginx 設定チュートリアルにおける add_header の落とし穴の詳細な説明

序文add_header は、headers モジュールで定義されたディレクティブです。名前が示すよ...

VMware で Centos7 ブリッジ ネットワークを構成する手順の詳細な説明

VMware仮想マシンでのCentos7ブリッジネットワーク構成の完全な手順は参考用です。具体的な内...

Linux で NFS ファイル共有サーバーを構築するための詳細な手順

Linux が NFS サーバーを構築異なるオペレーティング システム間でデータを共有するために、通...

Linux で SpringBoot jar プログラム デプロイメント シェル スクリプトを起動および停止する方法

では早速、コードをお見せしましょう。具体的なコードは次のとおりです。 #!/bin/bash cd ...

JSONデータをHTMLで表示する方法

背景:場合によっては、json データをページに直接表示する必要があります (たとえば、インターフェ...

Webpack4プラグインの実装原理についての簡単な説明

目次序文知る練習すれば完璧になる序文wabpack では、ローダーの他にプラグインがコア機能です。プ...