このフィドル にアクセスして、意味を確認してください-
親DIVがあり、その中に2つのDIVが垂直方向に配置されています。上部のDIVはコンテンツの高さのみを持つ必要がありますが、下部のDIVは、コンテンツの高さに関係なく、親DIVの残りのスペースをすべて占有し、親DIVと重ならないようにする必要があります。
HTML:
<div class="outer">
<div class="inner-title">
THIS IS MY TITLE
</div>
<div class="inner-content">
CONTENT AREA
</div>
</div>
CSS:
html,body
{
height: 100%;
}
.outer
{
background-color:blue;
height: 80%;
}
.inner-title
{
background-color:red;
}
.inner-content
{
background-color:yellow;
height: auto;
}
つまり、「内部コンテンツ」は、重複することなく、「外部」DIVの残りのすべてのスペースを占める必要があります。
これを達成する方法のアイデアはありますか?
これに関するどんな助けも大いに感謝します。
追加 display:table;
親divとdisplay:table-row;
子divへ
そしてheight:0
最初の子divに。これは自動高さを取ります
html,body{
height: 100%;
}
.outer{
background-color:blue;
height: 80%; border:red solid 2px;
display: table;
width:100%
}
.inner-title{
background-color:red;
display:table-row;
width:100%
}
.inner-content{
background-color:grey;
display:table-row;
width:100%;
height:100%
}
新しいCSSの方法は、flexboxを使用することです。
/*QuickReset*/ *{box-sizing:border-box;margin:0;} html,body{height:100%;}
.flex-col {
display: flex;
flex-direction: column; /* or: flex-flow: column wrap; */
height: 100%;
}
.flex-fill { /* Add this class to the element you want to expand */
flex: 1;
}
<div class="flex-col">
<div style="background:red;"> HEADER </div>
<div class="flex-fill" style="background:yellow;"> CONTENT </div>
<div style="background:red;"> FOOTER</div>
</div>