2012-01-21 8 views
4

これは本当にばかげた質問のようですが、わかりません。親divに子の高さを設定するにはどうすればよいですか?

私は水平メニューにスタイルを設定しましたが、親divは子要素の高さに調整されません。ここjsFiddleです:http://jsfiddle.net/STSjm/202/

HTML

<div class="menu"> 
<ul> 
    <li><a href="#">Menu 1</a></li> 
    <li><a href="#">Menu 2</a></li> 
    <li><a href="#">Menu 3</a></li> 
</ul> 
<div class="clear"></div> 

とCSS:

.menu { 
    background: blue; 
} 

.menu li{ 
    float: left; 
    background: green; 
} 

.menu li a{ 
    background: red; 
    padding: 25px 25px 25px 25px; 
} 

.menu li a:hover{ 
    background: orange; 
} 

.clear { 
    clear: both; 
} 
+0

clearメソッドはうまく動作し、.menuは子の高さになります。しかし、メニューの子はulです。そしてulは彼の子供の高さを持っていない。したがって、ul> liの間に問題があります。例:http://jsfiddle.net/STSjm/215/ –

+0

jsfiddleバージョン202?あなたはこれでかなり頑張っていますか? ;) –

+0

ああ。私はjsFiddleも新しいです。私は間違いなく205の反復をしていない。 私は今覚えています:私は別の質問のためにelses jsFiddleを連れて行き、ちょうどそれに取り組み始めました。多分それは悪い形です... 100のように戻ると、それはまったく違うものだったでしょう。 私はちょうどこれらの新しいツールをすべて考え出しています...許してください。 – convoke

答えて

5

はここで何が起こっているのです:

あなた<a>要素は、パディングを持っていますが、それらはdisplay:inline実際には幅/高さを追加するのではなく、埋め込みをの外側に追加します。そのため、メニューは展開されません。

.menu { 
    float:left; 
    width:100%; 
} 
:トリックを行う必要があり、このCSSを追加し、

http://jsfiddle.net/STSjm/216/

また、あなたは "クリア" のdivを必要としません。この問題を解決するには

は、アンカーにdisplay:blockを設定しました

http://jsfiddle.net/STSjm/218/

余分な不要なHを追加することなくこれを解決するためのCSSのみの「clearfix」トリックもありますTMLマークアップ。

+0

パーフェクト!ありがとうございました! – convoke

+0

問題はありません。サイトにようこそ。あなたの問題についての明確かつ整理された説明をソースコードとライブデモで提供してくれてありがとう。優れた。 –

関連する問題