display: inline-block
はまったく人気がなく、人々はfloat
を使用する傾向があります。これは私の問題の有益な答えが見つからなかったのかもしれません。display:inline-blockは新しい行を強制します
次のスニペットでは、3つのボックスがあります。 #b1
は、#b2
と同じ高さと#b3
を合わせています。新しい行の代わりに#b2
のすぐ下に#b3
を直接表示することはどういうことですか?
のため、clear:both
のために追加する必要があります。float
でどうすればよいかわかりません。私の知識でそれをテストし、より良い結果を得られなかった。
#b2
と#b3
の周りにラッパーを追加せずに誰でもこの問題を解決する方法がありますか?残念ながら、HTMLマークアップは変更できません。
ありがとうございました。素敵な日です。私の意見で
#wrapper {
width: 100%;
font-size: 0;
}
.block {
display: inline-block;
vertical-align: top;
position: relative;
}
.block > p {
font-size: 1rem;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.block_50x100 {
width: 50%;
padding-top: 100%;
background: #0f0;
}
.block_50x50 {
width: 50%;
padding-top: 50%;
background: #00f;
}
.block_50x50+.block_50x50 {
background: #f00;
}
<div id="wrapper">
<div id="b1" class="block block_50x100">
<p>some content</p>
</div>
<div id="b2" class="block block_50x50">
<p>some content</p>
</div>
<div id="b3" class="block block_50x50">
<p>some content</p>
</div>
</div>
最初の2つの要素の幅を50%に設定し、3番目の要素に空き領域がないため、改行が強制されます。 –
いいえ、浮きを排除したわけではありません。他の現在のレイアウトのメス(ゼロのサポートを持つCSSグリッドを除く)(そして位置指定を除く)は、コンテナの高さが分からない場合は別途*のラッパーが必要です。* –
'float'を' clear'なしでも使用できます。あなたのボックスの高さが同じになると、次の要素が下に置かれます:[demo](https://jsfiddle.net/ou70kvor/) – insertusernamehere