2017-06-23 6 views
2

私の質問には最高の言葉ではないかもしれませんが、これは私が達成しようとしているものです。css同じクラス名を持つ別の要素の子であるクラスのスタイルを指定する方法

私は多くのコンポーネント(angular1.xのディレクティブ)を使用しているbootstrap 3スタイリングでAngular2アプリを使用しています。これにより、コンポーネント内にコンポーネントがあることもあります。

私のページの1つに、ブートストラップクラス.wellがあり、それに.wellを利用する別のコンポーネントがあります。したがって、あなたがブートストラップに慣れているなら、別の.wellの中の.wellはかなりのパディングをもたらします。

だから、別の.wellの内部にある場合は、.wellの内側のパディングを削除するCSSセレクターを作成したいと思います。ここで

は、私がこれまで試したものです。これらの

.well .well { 
    padding: 0; 
} 

div#doubled-up-well .well { 
    padding: 0; 
} 

div.well .well { 
    padding: 0; 
} 

div.well form.well { 
    padding: 0; 
} 

どれも動作するようには思えない、私がここで間違って何をやっていますか?

<div class="well" id="doubled-up-well"> 
    <my-custom-component> 
    <form class="well {some more angular classes here}"></form> 
    </my-custom-component> 
</div> 

それはそこには私のform要素で定義された複数のクラスであることに関係していない。ここで

は、より良いアイデアを与えるために構造化されますどのようにですか?それは私のdivと私のformの間に要素があるからです(これが私のCSSセレクタで>を使わなかったのです)?

編集:私はまた、これらを試してみた:

div#doubled-up-well > member-add-member-demo > form.well.ng-untouched.ng-pristine.ng-valid { 
    padding: 0; 
    margin-bottom: 0; 
    background-color: red !important; 
} 

div#doubled-up-well form.well.ng-untouched.ng-pristine.ng-valid { 
    padding: 0; 
    margin-bottom: 0; 
    background-color: red !important; 
} 

編集:ここではページにレンダリングされ、正確なHTMLでフィドルです。実際のところ、私の実際のアプリではうまくいきません。

https://jsfiddle.net/rv69f6ok/2/

+0

正確に使用されているクラス – Chiller

+1

を調べてみてください。具体的には、https://developer.mozilla.org/en/docs/Web/CSS/Specificityに問題があります。クイックテストのために 'padding:0!important;'を使うことができます。 –

+0

.well .well {padding:0!important;} –

答えて

0

私もこの問題に遭遇してきた、と私は、彼らが変更する必要のある特定のコンポーネントのスタイルを書かなければならなかったので、私の場合にはそれがでした。グローバルなCSSまたは親コンポーネントのCSSに.well .wellを書き込もうとすると、各コンポーネントのスタイルがその特定のコンポーネントに分離されているため、機能しません。

あなたのケースでは、埋め込みを取り除きたい子供のコンポーネントに.wellのスタイルを書きます。削減された埋め込みを適用したくない他の領域でそのコンポーネントを使用している場合は、child .wellクラスが含まれている要素と同じ要素にいくつかのクラスを追加することになります。その余分なクラスは、独自のパディング値を減らすフラグとして機能し、.foo.well {padding:0;}のような特殊性を追加することによって、あなたのCSSの.wellクラスを上書きします。 }

+0

あなたは、この1つのコンポーネントは、親がうまくいない別のページで使用されます。だから私は、井戸が二重になったときに余分な詰め物を取り除きたいだけなのです。ちなみに、私のCSSの仕様は、この特定のコンポーネントのためのCSSファイルでのみであり、親CSSまたはグローバルCSSではありません。その場合は – ganders

+0

で、パディングを削除する必要があるかどうかのフラグとして@inputを追加することにします。 skinny = "true"をHTMLで、次にコンポーネントで@Input()をskinny:booleanに設定します。その入力の値に基づいてngStyleまたはngClassを適用します。 – David

+0

おもしろい、私はそれを試してみよう! – ganders

関連する問題