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 を使用して Django テクノロジー スタック プロジェクトをデプロイする方法

Docker の人気と成熟に伴い、Docker は徐々にプロジェクトをデプロイするための第一の選択肢...

MySQLフィルタリングレプリケーションのアイデアの詳細な説明

目次mysql フィルター レプリケーションメインデータベースに実装ライブラリから実装いくつかの質問...

シェルスクリプトは、Docker の半自動コンパイル、パッケージ化、およびリリースアプリケーション操作を構築します。

Docker 公開方法は、DevOps (送信、コンパイル、パッケージ化、リリースなどの一連のイベ...

HTML テーブルの行間隔を変更する方法の例

HTML テーブルを使用する場合、行間隔を変更する必要がある場合がありますが、余白、パディング、折り...

Centos7にTenda U12ワイヤレスネットワークカードドライバーをインストールする際の問題を解決する

解決プロセス:方法1: CentOS7.3 のデフォルトのカーネル バージョンは低く、3.10.0-...

MySQL トリガー: 複数のトリガー操作の作成例の分析

この記事では、例を使用して、MySQL で複数のトリガー操作を作成する方法について説明します。ご参考...

ミニプログラムの基本的な使用方法の知識ポイント(非常に包括的で、お勧めです!)

目次アプリを登録するときに何をすればよいですか?ページを登録するときに通常何をする必要がありますか?...

Dockerコンテナ監視の原理とcAdvisorのインストールおよび使用方法

本番環境におけるコンテナの稼働状況を監視することは非常に重要です。監視を通じて、コンテナの稼働状況を...

MySQL の replace と replace into の詳細な例 into_Mysql

MySQL の replace と replace into はどちらも頻繁に使用される関数です。...

シンプルなウェブページレイアウトの構造と表現原理の共有

構造とパフォーマンスの紹介HTML 構造、CSS 表現、JavaScript 動作。Web ページの...

CentOS 7.5 に Docker をインストールする詳細なチュートリアル

Docker入門Docker は、アプリケーションをより速く配信するのに役立つオープンソースのコンテ...

HTML 言語百科事典

123WordPress.com-HTML noscriptオブジェクトolオプションPパラントプレ...

node_modulesを削除して再インストールする方法

目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...

MYSQL クエリの効率を向上させる 10 の SQL ステートメント最適化テクニック

MySQL データベースの実行効率はプログラムの実行速度に大きな影響を与えます。データベースの効率的...

bashコマンドの使い方の詳細な説明

Linux では、基本的に vi エディタのように「.sh」拡張子を持つテキストの処理と実行を記述す...