CSSカスケードおよび継承レベル3では、all
省略形のプロパティとキーワードがunset
導入されています。これらを組み合わせることで、これを簡単に実現できます。
たとえば、作成者all: initial
が要素を指定すると、カスケードの作成者、ユーザー、またはユーザーエージェントレベルにルールが表示されていないかのように、すべての継承がブロックされ、すべてのプロパティがリセットされます。
これは、外側のページのスタイルを継承したくないページに含まれる「ウィジェット」のルート要素に役立ちます。ただし、その要素に適用された「デフォルト」スタイル(たとえば、display: block
などのブロック要素のUAスタイルシートから<div>
)も吹き飛ばされることに注意してください。
all: initial
divとall: unset
その子孫に適用する必要があります。
#mydiv {
all: initial; /* blocking inheritance for all properties */
}
#mydiv * {
all: unset; /* allowing inheritance within #mydiv */
}
idの代わりにdivでクラスを使用すると、その子孫のスタイルを設定するために作成するルールが、このルールで使用される高い特異性と一致または打ち負かされる必要がなくなります。
本当に安全にするために、潜在的な疑似要素の子孫のスタイルもブロックすることをお勧めします。
#mydiv::before,
#mydiv::after,
#mydiv *::before,
#mydiv *::after {
all: unset;
}
または、ブラウザをより幅広くサポートするために、all
既知のすべてのCSSプロパティを設定して手動で実行を試みることができます(プレフィックス付きのバージョンを忘れないでください)。
#mydiv {
/*
* using initial for all properties
* to totally block inheritance
*/
align-content: initial;
align-items: initial;
align-self: initial;
alignment-baseline: initial;
animation: initial;
backface-visibility: initial;
background: initial;
...
}
#mydiv::before,
#mydiv::after,
#mydiv *,
#mydiv *::before,
#mydiv *::after {
/*
* using inherit for normally heritable properties,
* and initial for the others, as unset does
*/
align-content: initial;
align-items: initial;
align-self: initial;
...
color: inherit;
...
}
all
省略形のプロパティのブラウザサポートを奨励し、次の問題のリンクを使用してその採用を追跡できます。
- ☑Chrome37 + _
- ☑Firefox27 + _
- ☑Webkit (Safari 9.1以降)
- ☐InternetExplorer _
- ☑エッジ79+
- ☑Opera24+
all
省略形プロパティの最新のブラウザサポート情報は、こちらから入手できます。