2016-10-06 2 views
0

私の最上位コンポーネントの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つのクラス間の競合に勝ちます。子アイテムに優先順位を与えるにはどうすればよいですか?

+0

いつものように、あまり具体的でないセレクタに属するルールには、!重要です。 – estus

+0

!importantを追加することは、角度の働きにより子コンポーネントのスタイルがあなたのやり取りを優先するため、この場合は役に立ちません。 –

+0

私の '/ deep /' cssクラスの前に ':host'セレクタを使うと、子コンポーネントで定義されているcssクラスより優先されています。これらのコンポーネントが ':host'セレクタも使わない限り、 – SnoopDougg

答えて

1

/深い/あなたは/深い/ {マージン:** PX}使用することができますが、親にdiv要素のマージンを変更したいと言う乗るオーバー両親スタイルに使用されている限り、私はあなたが定義する知っているよう

を親コンポーネントが子コンポーネントのスタイルに干渉しないようにする場合は、子コンポーネントのスタイルを使用します。親のスタイルを優先するには、子供のスタイルを定義しないといいでしょう。あなたの場合、子コンポーネントで定義されたスタイルにマージンを指定しないでください。

もう1つの方法は、親子でスティリーを定義するのではなく、新しいグローバルスタイルシートを作成し、そこにグローバルスタイルだけを追加して、そのスタイルシートをindex.htmlで参照する必要があります。親と子の両方のスタイルからstyles.cssを追加し、index.htmlのstyles.cssを参照してください。

+0

ドキュメントでは、「/ deep/selectorを使用して、子コンポーネントツリーを介してすべての子コンポーネントビューにスタイルを強制的に適用できます。/deep/selectorは、ネストされたコンポーネントの深さに関係し、ビューの子とコンポーネントの子コンポーネントの両方に適用されます。 – SnoopDougg

+0

しかし、私はあなたが言っていることを見ています。私の問題は、子コンポーネントが親コンポーネントの外に表示されることがあり、そのときに余白が異なる必要があることです。だから私は子供がそれの内部に発生する場合、親を変更することを望んでいた。 – SnoopDougg

+0

その場合、私は、親を囲む子コンポーネントにコンテナを置くと、マージンを適用するのに役立つはずだと思います。 –

関連する問題