これが私のHTMLスニペットです。
<div class=bigger>
<div>A</div>
<div>B</div>
<div>C</div>
</div>
次のような CSS がある場合:
.bigger
{
height: 300px;
}
すべての子 div の高さを親と同じにする、つまりすべての高さを 300px にする CSS の方法はありますか?
Flexbox を使用したソリューション:
.bigger {
height: 400px;
background: #eea;
display: flex;
flex-direction: column;
}
.bigger div {
margin: 4px;
border: 1px dotted green;
flex: auto;
}
デモ: http://codepen.io/anon/pen/nAjLt (Codepen はベンダー プレフィックスを行うことに注意してください)
純粋にCSSでこれを実現したい場合は、これを試すことができます
4項目に設定しました。必要な数のアイテムに拡張できます。
/* one item */
.bigger > div:first-child:nth-last-child(1) {
height: 300px;
}
/* two items */
.bigger > div:first-child:nth-last-child(2),
.bigger > div:first-child:nth-last-child(2) ~ div {
height: 150px;
}
/* three items */
.bigger > div:first-child:nth-last-child(3),
.bigger > div:first-child:nth-last-child(3) ~ div {
height: 100px;
}
/* four items */
.bigger > div:first-child:nth-last-child(4),
.bigger > div:first-child:nth-last-child(4) ~ div {
height: 75px;
}
.bigger
{
height: auto;
}
.bigger div
{
height:50px;
}
各内部divの高さについて言及する必要があり、それのみが適切に機能します。
ここで、高さが同じである大きな div 内に別の内部 div 要素を追加します。
ここで高さ 50px について言及しましたが、必要な高さを指定してください。
要素が同じ量のスペースを占有できるようにすることは、伝統的に<table>
s を使用した場合にのみ可能でした。ただし、CSS を使用して、代わりに を<div>
のように動作<table>
させることができます。
HTML
<div class=bigger>
<div>A</div>
<div>B</div>
<div>C</div>
<div>A</div>
<div>B</div>
<div>C</div>
<!-- add or remove any number of <div>s here -->
</div>
(関連) CSS
.bigger {
display: table;
height: 300px;
width: 100%;
}
.bigger > div {
display: table-row;
border-top: 1px solid black;
border-bottom: 1px solid black;
}
auto
子供と親と一緒に作業するには、とを使用する必要があります。max
<div class="bigger">
<div>A</div>
<div>B</div>
<div>C</div>
</div>
ここで使用できます
.bigger {
height: auto; // this will do the trick..
overflow: none;
min-height: 300px;
}
height
子が増加または減少するたびに同じままであることを確認するためだけに、最大値と最小値を使用してから、これを使用します。
.bigger div {
height: 100%; // note this..
}
ここでこのフィドルを試してみてください: http://jsfiddle.net/afzaal_ahmad_zeeshan/2bJfW/ div をさらに追加して確認してください。
div の高さを動的に作成する場合、CSS はありません。JS が必要になるか、そのために jQuery を使用できます。子の数を数えてから、高さのパーセンテージを変更する必要があるため、テキストがそのサイズに収まらないため、から (3 の場合) または (4) の100
場合30
などとしましょう。22
.bigger {
width:100%;
height:auto;
border:1px solid red;
}
.bigger div {
height:100px;
width:100%;
border:1px solid blue;
}
あなたの目的のために、このcssを使用して、に設定height
してくださいauto
it will adjust to any no of divs
。
また .bigger div
、すべての div を 100px の高さに設定します。
EDIT:固定コンテナ用
.bigger {
width:100%;
height:300px;
border:1px solid red;
display:table;
}
.bigger div {
display:table-row;
height:auto;
width:100%;
}
また、すべてのブラウザで同じになります:)