私の最上位コンポーネントのstylesブロックで、ng-content内に表示されるアイテムの余白を設定する/deep/
cssクラスを定義します。子コンポーネントが異なるマージンを定義した独自のcssクラスを適用しても、そのcssクラスを優先させるにはどうすればよいですか。例えばAngular2の "深い" CSSクラスを優先させるにはどうすればいいですか?
:
ParentComponent.ts:
@Component({
selector: 'my-parent',
styles: [`
/deep/ .child-item { /* I WANT THIS TO TAKE PRECEDENCE */
margin-right: 10px;
margin-left: 10px;
}
`],
template: `
<div>
<ng-content></ng-content>
<div>
`
})
export class ParentComponent {}
ChildComponent.ts
@Component({
selector: 'my-child',
styles: [`
.less-important-class { /* THESE MARGINS SHOULD BE IGNORED IN CONFLICTS */
margin-right: 5px;
margin-left: 5px;
background-color: rgba(255, 0, 0, 1.0);
}
`],
template: `
<button type="button" class="less-important-class child-item">My Little Button</button>
`
})
export class ChildComponent {}
子品目がコンパイルされたスタイルシートの最初に表示されるので、私は、あまりimportant-考えますクラスはより高いCSSの特異性を持ち、2つのクラス間の競合に勝ちます。子アイテムに優先順位を与えるにはどうすればよいですか?
いつものように、あまり具体的でないセレクタに属するルールには、!重要です。 – estus
!importantを追加することは、角度の働きにより子コンポーネントのスタイルがあなたのやり取りを優先するため、この場合は役に立ちません。 –
私の '/ deep /' cssクラスの前に ':host'セレクタを使うと、子コンポーネントで定義されているcssクラスより優先されています。これらのコンポーネントが ':host'セレクタも使わない限り、 – SnoopDougg