アップデート2 ::slotted
::slotted
すべての新しいブラウザでサポートされるようになり、 ViewEncapsulation.ShadowDom
https://developer.mozilla.org/en-US/docs/Web/CSS/::slotted
アップデート1 :: ng-deep
/deep/
は廃止され、に置き換えられました::ng-deep
。
::ng-deep
もすでに非推奨とマークされていますが、まだ代替品はありません。
ときにViewEncapsulation.Native
適切にすべてのブラウザとaccrossシャドウDOMの境界をスタイリング支持体によって支持されており、::ng-deep
おそらく廃止されます。
元の
Angularは、あらゆる種類のCSSクラスをDOMに追加するHTMLに追加して、シャドウDOM CSSカプセル化をエミュレートして、コンポーネントの内外へのスタイルのブリードを防止します。Angularは、追加したCSSを書き換えて、これらの追加クラスに一致させます。[innerHTML]
これらのクラスを使用して追加されたHTMLは追加されず、書き換えられたCSSは一致しません。
回避策として
/* :host /deep/ mySelector { */
:host ::ng-deep mySelector {
background-color: blue;
}
/* body /deep/ mySelector { */
body ::ng-deep mySelector {
background-color: green;
}
>>>
(および同等のものです/deep/
が/deep/
、SASSでより適切に動作します)および::shadow
2.0.0-beta.10で追加されました。これらはシャドウDOM CSSコンビencapsulation: ViewEncapsulation.Emulated
ネーター(非推奨)に似ており、Angular2のデフォルトであるでのみ機能します。これらもおそらく動作しViewEncapsulation.None
ますが、必要がないため無視されます。これらのコンビネータは、クロスコンポーネントスタイリングのより高度な機能がサポートされるまでの中間的なソリューションにすぎません。
別のアプローチは使用することです
@Component({
...
encapsulation: ViewEncapsulation.None,
})
CSSをブロックするすべてのコンポーネント(CSSを追加する場所と、HTMLがスタイルを設定する場所によって異なります。アプリケーションのすべてのコンポーネントである可能性があります)
更新
プランカーの例
index.html
?に追加されたスタイルから