CSS 変数を使用して継承された値を実現するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-14 16:38:02
オリジナル
985 人が閲覧しました

How to Achieve Inherited Values with CSS Variables?

CSS 変数 (別名カスタム プロパティ) 内に継承値を保存する方法?

シナリオ

次の CSS コードを考えてみましょう:

:root {
  --color: rgba(20, 20, 20, 0.5);
}

.box {
  width: 50px;
  height: 50px;
  display: inline-block;
  margin-right: 30px;
  border-radius: 50%;
  position: relative;
}

.red {
  background: rgba(255, 0, 0, 0.5);
}

.blue {
  background: rgba(0, 255, 0, 0.5);
}

.box:before {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  border-radius: 50%;
  transform: translateX(30px);
  background: var(--color);
  filter: invert(1);
}
ログイン後にコピー

このコードでは、--color を使用して .box の背景を制御します。要素の擬似要素。ただし、親の .box 要素から色を継承したい状況が発生する可能性があります。

CSS 変数継承チャレンジ

CSS では、inherit キーワードは値としてサポートされていません。 CSS変数。これは、目的の効果を達成するために --color を継承するように直接設定できないことを意味します。

解決策: フォールバック値と初期値を使用する

この制限を克服するには、次の 2 つの手法を使用できます。

1.フォールバック値の使用:

CSS 変数でフォールバック値を利用することで、 --color が明示的に定義されていない場合に継承を使用するようにプロパティに指示できます。

background: var(--color, inherit);
ログイン後にコピー

ただし、この場合、 --color は常にルート レベルで定義され、継承されるため、フォールバック値が変更されることはありません。使用済み。

2.初期値の使用:

初期値を使用して --color を「定義解除」し、フォールバック値の使用を強制できます。 CSS 仕様に従って、初期値は空の値であり、var() との特別な相互作用があります。

.box:before {
  ...
  background: var(--color, inherit);
  ...
}

.box {
  ...
  --color: initial;
}
ログイン後にコピー

この変更により、CSS 変数内で値の継承を実現できるようになり、親要素の色に基づいて背景色を制御します。

<div class="box red">
ログイン後にコピー

以上がCSS 変数を使用して継承された値を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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