6

私が開発している CSS フレームワークではall: unset、それ自体で正常に動作する を使用しています。

#foo { all: unset; }

ただし、場合によっては、次のように、このルールの効果を「元に戻す」必要があります。

#foo:hover { all: auto; }

autoただし、 forの値がないため、これは明らかに機能しませんall。代わりに、プロパティを「キャンセル」する代わりに、すべての値を親の値または初期値に戻すという異なる効果を持つ値とがあります(これはシステムレベルのデフォルト値を意味すると思います)inheritinitialall

やりたいことを実現するために、今やっている

#foo:not(:hover) { all: unset; }

これは問題なく動作しますが、たとえば複数の疑似クラスに対してこれを実行したい場合、スケーラブルではなく、all: unsetプロパティをオーバーライドしたいですか? そうする方法はありますか?

4

3 に答える 3

2

BoltClock が説明したことに加えて、省略形ではないプロパティであっても、現在、必要なことは不可能です。

* { color: red; }
#foo { color: unset; }
#foo:hover { color: /* How to revert to red? */ }

カスケードに勝つ値を追加すると、カスケードに「戻って」代わりに前の勝者を取得するように指示する方法はありません。明示的に設定する必要がありますが、それは知っている場合にのみ可能です。

最も近いのは CSS Cascade 4 で導入されたrevertキーワードで、カスケードを以前の元のレベルにロールバックします。ただし、カスケードを同じオリジン レベルの前の勝者にロールバックすることは現在不可能です。

次に、解決策は、セレクターが必要な場合にのみ適用されるように制限することです。この方法では、元に戻す必要はありません。

于 2016-04-09T18:20:48.970 に答える