のパーセンテージ値はheight
機能しないのに、 のパーセンテージ値はwidth
機能するのはなぜですか?
例えば:
<div id="working"></div>
<div id="not-working"></div>
#working{
width:80%;
height:140px;
background:orange;
}
#not-working{
width:80%;
height:30%;
background:green;
}
の幅は#working
ビューポートの 80% になりますが、 の高さは#not-working
0 になります。
ベストアンサー1
ブロック要素の高さは、デフォルトでブロックのコンテンツの高さになります。つまり、次のような場合です。
<div id="outer">
<div id="inner">
<p>Where is pancakes house?</p>
</div>
</div>
#inner
は段落を収容できるほどの高さに成長し、#outer
は を収容できるほどの高さに成長します#inner
。
高さまたは幅をパーセンテージで指定する場合、それは要素の親に対するパーセンテージです。幅の場合、特に指定がない限り、すべてのブロック要素は、最大で親と同じ幅になります<html>
。したがって、ブロック要素の幅はそのコンテンツとは独立しており、 はwidth: 50%
明確に定義されたピクセル数を生成します。
ただし、特定の高さを指定しない限り、ブロック要素の高さはそのコンテンツによって決まりますheight: 50%
。したがって、高さに関しては親と子の間でフィードバックがあり、親要素に特定の高さを指定してフィードバック ループを中断しない限り、明確に定義された値は生成されません。