2017-08-19 5 views
0

私はCSSでこの方法でのみ選択できるdivがあります。代替/控えめな方法で親子を書くCSS

#parent-div #child-div {// styles} 

私は次のように今まで私がどうなる子のdiv、にH1、H2、H3、およびpタグのすべてを変更したい:

#parent-div #child-div h1, #parent-div #child-div h2, #parent-div 
#child-div h3, #parent-div #child-div p { 
//styles 
} 

がより効率的にありますこれを行う方法? #parent-div#child-divを何度も繰り返し入力するのはあまりにも時間がかかるようです。論理的には#parent-div#child-div> h1、h2、h3、pのようにしたいと思いますが、これはうまくいきません。

これを短縮する方法に関するアイデアは素晴らしいでしょうか?私は複数のセレクタを使用する必要があるどこで変更/スタイリングが必要なCSSがたくさんある大きなサイトを持っています。親と子div sは両方id Sの標的とされている場合

+1

'#親のdiv#の子供のdiv> *'ターゲットのすべての直接の子子-div' '内部 – kukkuz

+0

CSSプリプロセッサは本当に便利になるところです。あなたの質問に対する直接的な答えではないことは分かっていますが、LESSやSCSSのようなものを使用した場合(これは、ファイルが変更されたときに常にウォッチャーを実行してCSSを構築する必要があります) – philraj

+1

リファクタリングの作業コードを尋ねる質問は、スタックオーバーフローサイトではなく、コードレビューサイトに属しているため、この質問を議論の対象外としています。 – TylerH

答えて

0

、(あなたが使用している前提idの適切かつ唯一のそれぞれの1つのインスタンスを持っている)#child-divが十分にあるので、あなたが、#parent-div識別子を省略することができます。

多くの場合、ルールのspecificityに基づいてプロパティが継承されます(フォントの色やフォントサイズなど)。つまり、#child-divという子の宣言は、#child-divというプロパティを作成するだけで省略することができます(必要に応じてチェーンの上に重ねて上書きするだけです)。

@kukkuzさんのように、#child-divのすべての直接の子に同じプロパティを適用しようとしている場合は、#child-div > *を使用できます。

1

この実験的機能は:anyです。現在、geckoベースといくつかのWebkitベースのブラウザでサポートされています。例えば

#parent-div > #child-div > :-moz-any(h1, h2, h3, p){ 
    /*stuff*/ 
} 

注意が:matchesとして標準化中であること。

私が気づいている方法は他にありません。

詳細については、css :any @ MDNを参照してください。

1

逆のアプローチを試みることがあります。

要素をターゲティングする代わりに、要素を除外します。

子divの子孫である他の要素タイプを知る必要があります。あなたがh1h2h3pタグをスタイルにしたい場合は

ので、これを試してください:要素タイプが不明または予測できない、あまりにも多くある場合

#parent-div #child-div *:not(h4):not(h5):not(h6):not(div):not(span):not(nav):not(section) 

しかし、その後、あなたのオリジナルの方法は完全に見えます良い。

#parent-div #child-div h1, 
#parent-div #child-div h2, 
#parent-div #child-div h3, 
#parent-div #child-div p 
+1

マイケルには知っておきたいことがあります。 –

+0

実現可能ですが、スタイルを設定したくないタグの網羅的なリストが必要です。これは、かなり長い間実行でき、それぞれの希望の場合を個別に宣言するよりも長くなる可能性があります。 @Vivick、多分、 – Vivick

+0

。またはそうでないかもしれません。そこには1つか2つのタグしかありません。それが私がこのオプションを提示した理由です。 –

関連する問題