ホームページ > ウェブフロントエンド > CSSチュートリアル > スコープ指定された CSS カスタム プロパティが計算のために正しくカスケードされないことがあるのはなぜですか?

スコープ指定された CSS カスタム プロパティが計算のために正しくカスケードされないことがあるのはなぜですか?

Barbara Streisand
リリース: 2024-12-19 07:56:10
オリジナル
340 人が閲覧しました

Why Do Scoped CSS Custom Properties Sometimes Fail to Cascade Correctly for Calculations?

CSS でのスコープ付きカスタム プロパティの継承

CSS でカスタム プロパティを定義する場合、スコープはその継承と使用において重要な役割を果たします。ただし、外側のスコープ内の変数を計算するために使用されるスコープ付きカスタム プロパティが無視される状況が発生する場合があります。これは、カスタム プロパティが子要素内で再定義されるときに発生し、予期しない結果が生じる可能性があります。

スコープの説明

カスタム プロパティは、-- 接頭辞と接頭辞を使用して定義されます。 :root または :host キーワードを使用して、特定の要素またはサブツリーにスコープを設定できます。スコープ付きプロパティは要素またはその子孫内でのみアクセスできるため、カプセル化と制御された継承が可能です。

スコープ付きプロパティと計算の問題

この例では、次のように定義しています。 --size-1、--size-2、および --size-3 の値を計算するには、:root セレクターのスコープ付きカスタム プロパティ --scale を使用します。ただし、子要素 (.scale-1x、.scale-2x、および .scale-3x) 内では --scale を再定義しています。 CSS はカスタム プロパティを上から下の方法で評価するため、これにより問題が発生します。カスタム プロパティが特定のレベルで評価されると、ネストされた要素で上書きしたり変更したりすることはできません。

コンポーザブル スケーリングのための CSS カスタム プロパティ テクニック

目的の値を達成するには結合せずに異なるレベルでリストをスケーリングする効果を得るには、次の手法を使用できます。

:root {
  --size-1: calc(1rem * var(--scale, 1));
  --size-2: calc(2rem * var(--scale, 1));
  --size-3: calc(3rem * var(--scale, 1));
}

.size-1, .size-2, .size-3 {
  font-size: var(--scale, 1rem);
}

.scale-1x {
  --scale: 1;
}
.scale-2x {
  --scale: 2;
}
.scale-3x {
  --scale: 3;
}
ログイン後にコピー

このアプローチでは、 --scale プロパティのスコープは :root レベルのままになります。ただし、これをフォント サイズの計算に直接使用するのではなく、.size-1、.size-2、および .size-3 クラス内の var() 関数内で使用します。これにより、フォント サイズが外部スコープで設定されている場合、 --scale の値を継承できるようになります。 --scale が指定されていない場合は、デフォルト値の 1rem に戻ります。

この手法を使用すると、要素を結合せずにスケーリング効果を構成できます。 .scale-1x、.scale-2x、および .scale-3x クラスをさまざまなリスト要素またはグループに適用して、目的のスケールのバリエーションを実現できます。

以上がスコープ指定された CSS カスタム プロパティが計算のために正しくカスケードされないことがあるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート