2017-01-16 3 views
0

私は2つのセクションを持つ反応性の高いページを持っています。右のセクション内のすべての要素が応答する必要がありますので、私が使用:コードスニペットに見るように高さ:自動ですべての高さスタイルをオーバーライドします

#rightSection * {max-width:100%;height:auto} 

をしかし、それ以上の高さのスタイルが無視されています。

!importantを使用したくない理由は、HTMLコードが多くのインラインスタイルを使用しているためです。そのため、CSSを使用してスタイルを強制したくないためです。 height:autoの後に高さを設定する方法はありますか?

#rightSection * {max-width:100%;height:auto} 
 

 

 
    .mydiv { 
 
    \t width:534px; 
 
    \t height:37px; 
 
    \t box-sizing:border-box; 
 
    }
<div id="rightSection"> 
 
    <div class="mydiv" style="background:#ff0000"></div> 
 
</div> 
 

 
That Red div is invisible because the height is igonred!

+2

はい、あなたの '.mydiv'を作るホープ例えば、あなたのコードは、より一般的にするために役立つのようにして、代わりにCSSクラスを使用することができますセレクタはより具体的です。おそらく '#rightSection .mydiv'? – BenM

+0

だからこそ、CSS **では 'id'セレクタを使用することはありません。ちょうどそれをやってはいけません - それは**の**利点と**欠点の**多くを持っています。忘れないでください*** *** ***! – connexo

+2

あなたがそれを覚えたらすぐに、CSSの特異性について学びましょう。 – connexo

答えて

2

起こっているものは何でもあなたのコードによると罰金ですCSSは、最後のルールが適用され、それがどちらに、より具体的であることを意味しCascading Style sheetを意味します。したがって、あなたの場合、最初のルールは2番目のルールよりも高い特定性を持ちますので、height:autoが適用されています。

Specificityの詳細については、リンクを参照してください。

あなたのコードでは、上記のリンクから知る別の方法で、第2の役割を特定することができます。以下はこのような例の1つです。

#rightSection * {max-width:100%;height:auto} 
 

 

 
    #rightSection div { 
 
    \t width:534px; 
 
    \t height:37px; 
 
    \t box-sizing:border-box; 
 
    }
<div id="rightSection"> 
 
    <div class="mydiv" style="background:#ff0000"></div> 
 
</div> 
 

 
That Red div is invisible because the height is igonred!

編集: ように私は、理由の詳細についてはIdセレクタrefer thisを使用しないことをお勧め@connexoによって指摘。

クラスは

.outerDiv * {max-width:100%;height:auto} 
 

 

 
    .outerDiv .mydiv{ 
 
    \t width:534px; 
 
    \t height:37px; 
 
    \t box-sizing:border-box; 
 
    }
<div class="outerDiv"> 
 
    <div class="mydiv" style="background:#ff0000"></div> 
 
</div> 
 

 
That Red div is visible now as the rule is more specific.
はそれが役立ちます:)

+0

これは、直ちに解決しながらCSSで 'id'セレクタを使うことをアドバイスすることで、状況を悪化させています(これは、まったく正確に110%***を知っている場合にのみ行うべきです)。***あなたは' id'を使用しています。 「それは要素上にある」というのは有効かつ受け入れられない説明である)。 – connexo

+0

私はこれが1つの可能な解決であると述べました。質問の所有者が好むものとhtmlレイアウトのどちらに依存するかは、さらに多くあります。 – Manish

+0

それはあなたの治療法を使って生き続けることを提案する病気によって引き起こされた問題のための技術的に解決した解決策です。 **いいえ、これは考えられる方法では良い解決策ではありません。** – connexo

1

#rightSection * {max-width:100%;height:auto} 
 

 

 
    #rightSection .mydiv { 
 
    \t width:534px; 
 
    \t height:37px; 
 
    \t box-sizing:border-box; 
 
    }
<div id="rightSection"> 
 
    <div class="mydiv" style="background:#ff0000"></div> 
 
</div> 
 

 
That Red div is invisible because the height is igonred!

+0

これは、直接の問題を解決しながら、状況を悪化させています。 – connexo

+0

@connexoどういう意味ですか?それは悪化させる?セレクタの仕様、それはそれについてのものですね。それとも、IDを使ってどこか読んだことが悪いことかもしれませんか?あなたのコメントを説明することができます:) –

+0

http://screwlewse.com/2010/07/dont-use-id-selectors-in-css/ – connexo

関連する問題