カスタム プロパティの値を に設定すると、inherit
他のすべての CSS プロパティに期待することとまったく同じことが行われます。つまり、親の同じプロパティ値を継承します。
通常のプロパティ継承:
<style>
figure {
border: 1px solid red;
}
figure > figcaption {
border: inherit;
}
</style>
<figure>this figure has a red border
<figcaption>this figcaption has the same border
as its parent because it is inherited</figcaption>
</figure>
カスタム プロパティの継承 (明示的):
<style>
figure {
--foobar: 1px solid green;
}
figure > figcaption {
--foobar: inherit;
border: var(--foobar);
}
</style>
<figure>this figure has no border
<figcaption>this figcaption has a green border
because it explicitly inherits --foobar</figcaption>
</figure>
カスタム プロパティの継承 (暗黙的):
すべてのカスタム プロパティ ( とは異なりborder
ます) はデフォルトで継承されます
<style>
figure {
--foobar: 1px solid green;
}
figure > figcaption {
border: var(--foobar);
}
</style>
<figure>this figure has no border
<figcaption>this figcaption has a green border
because it implicitly inherits --foobar</figcaption>
</figure>
私の質問
その値を実際にキーワードに計算する場合、カスタム プロパティにのリテラル値をどのように設定しますか?inherit
inherit
<style>
figure {
border: 1px solid red;
--foobar: 1px solid green;
}
figure > figcaption {
border: var(--foobar);
}
figure > figcaption:hover {
--foobar: inherit;
}
</style>
<figure>this figure has a red border
<figcaption>this figcaption has a green border
because it inherits --foobar</figcaption>
</figure>
<!-- on hover -->
<figure>this figure has a red border
<figcaption>I want this figcaption
to have a red border (inherited from figure)
but its border is green!</figcaption>
</figure>
この例では、2 番目figcaption
(ホバー時) に親の赤い境界線を継承させたいので、 に設定--foobar
しinherit
ます。ただし、例 2 に示すように、これは に計算されませんinherit
。親のプロパティ--foobar
(存在する場合) から継承される値に計算されます。この場合は緑です。
CSS 作成者がこのように設計した理由を完全に理解しています。--foobar
他の CSS プロパティと同じなので、設定inherit
はその値を継承する必要があります。だから私は、2番目figcaption
に親の境界線を継承させるための回避策があるかどうか尋ねていると思います。
注、私はやることを考えました
figure > figcaption:hover {
border: inherit;
}
しかし、これは CSS 変数を使用する目的に反します。
figure > figcaption
すべてが値を使用する他の多くのプロパティがある場合var(--foobar)
、ホバーシナリオのためにそれらをもう一度再定義したくありません。これらのプロパティを一度だけ設定してから、コンテキストに基づいて変数を再割り当てしたいと思います。