CSS変数を使用してスタイルを変更する方法の例

CSS変数を使用してスタイルを変更する方法の例

質問

js を使用して CSS 疑似クラス スタイルを変更するにはどうすればよいでしょうか?しかし、js には疑似クラスセレクターがないので、どうすればよいでしょうか?要素クラスを切り替えたり、スタイルに新しいスタイルを動的に挿入したりするなど、インターネット上にはさまざまな方法があります。

次に別の方法を紹介します。これは、CSS 変数 (var) を設定し、この変数を JS を通じて変更してこれを実現する方法です。

例: div のホバー背景色を変更する

<!-- css -->
<スタイル タイプ="text/css">
    :根 {
        --divHoverColor: 赤;
    }
    div {
        幅: 100ピクセル;
        高さ: 100px;
        背景:素焼き。
    }
    div:ホバー{
        背景: var(--divHoverColor);
    }
</スタイル>
<!-- html -->
<div onClick="onDivClick('green')"/>
<!-- js -->
<script type="text/javascript">
    関数onDivClick(値){
        document.documentElement.style.setProperty('--divHoverColor', 値);
    }
</スクリプト>

それでは、CSS 変数について理解しましょう。

1. 基本的な使い方

ローカル変数

div {
    --masterColor: 赤;
    背景: var(--masterColor);
}

グローバル変数

/* HTML の場合、:root は <html> 要素を参照します */
:根 {
    --masterColor: 赤;
}
div {
    背景: var(--masterColor);
}

2. 構文

var( <カスタムプロパティ名> [, <宣言値> ]? )

<custom-property-name> : カスタムプロパティ名

<宣言値> : 宣言値(フォールバック値)

例:

div {
    /*
    --masterColor は未定義なので、背景色は赤になります 
    カンマで区切られた複数の宣言値を定義できます。var(--masterColor, red, green)
    */
    背景: var(--masterColor, red);
}

変数はvar()を使用して参照できます

例:

div {
    --masterColor: 赤;
    --bgColor:var(--masterColor)
}

注意: 属性名には変数は使用できません。

エラー例:

div {
    --bg: 背景;
    var(--bg): 赤;
}

3. ブラウザのサポート

使えますか

@support検出の使用

@supports ( (--masterColor: 赤)) {
  /* サポートされています */
}
@supports ( not (--masterColor: red)) {
  /* サポートされていません */
}

JS検出の使用

定数 isSupported = window.CSS && window.CSS.supports 
    && window.CSS.supports('--masterColor', '赤');

サポートされている場合
  /* サポートされています */
} それ以外 {
  /* サポートされていません */
}

参照する

翻訳
CSS 変数の仕様

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

<<:  HTML&CSS&JS 互換性ツリー (IE、Firefox、Chrome)

>>:  MySQL 上級学習インデックスの長所と短所、使用ルール

推薦する

Apache Log4j2 が核レベルの脆弱性と迅速な修正を報告

Apache Log4j2 が核レベルの脆弱性を報告し、スタックリーダーの友人たちは大騒ぎになりまし...

WeChatミニプログラムで検索キーワードを強調表示するサンプルコード

1. はじめにプロジェクトで要件に遭遇したら、データを検索してキーワードを強調表示します。要件を受け...

MySQL 数十億のデータのインポート、エクスポート、移行に関するメモ

最近はMySQLのメモをたくさん取っていますが、それは主に会社のOracleが比較的安定していてメン...

Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル

目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...

Vueで背景色と透明度を設定する方法

背景色と透明度の設定上記のように、最初の画像の場合は、灰色の背景と左上隅に白い「カバー」という文字を...

MySQLデータ遅延ジャンプの問題の解決策

今日は、データベース遅延ジャンプに関する別の典型的な問題を分析しました。このプロセスでは、参考のため...

Vueのシンプルストアの詳しい説明

Vue におけるストアの最も単純な応用はグローバル ストレージです。ここでは、相互にジャンプするため...

カンマで区切られたmysqlの分割関数の実装

1: 文字列を区切るためのストアドプロシージャを定義する 区切り文字 $$ `mess`$$ を使う...

Webフロントエンドツール、Sublime Text 2の紹介

Sublime Text 2 は、軽量でシンプル、効率的なクロスプラットフォーム エディターです。ブ...

MySQLデータベースイベントスケジュール実行タスクの詳細な説明

1. 背景プロジェクトの業務が進むにつれて、データベース テーブルの数がどんどん大きくなり、ハードデ...

Dockerコンテナ起動時に固定IPを設定する実装

Dockerインストール後のネットワークタイプ [root@insure updev]# docke...

JS における for、for...in、for...of、forEach の違いと使用例

forループ基本的な構文形式: for(変数の初期化; 条件式; 演算式){ループ本体ステートメント...

Docker+nacos+seata1.3.0 のインストールと使用設定チュートリアル

これに先立ち、1日かけてやってみました。Seataは使い方が簡単で超シンプルですが、インストールや設...

Vue の動的メニュー、動的ルートの読み込みと更新の落とし穴

目次必要:アイデア:レッスン:テキストを共有する:要約する必要:インターフェイスからサブメニュー デ...

MySQL のバイナリおよび varbinary データ型の詳細な説明

序文BINARY と VARBINARY は、文字列ではなくバイナリ文字列を格納する点を除いて、CH...