好像display: inline-block
是相當不受歡迎的,人們傾向於使用float
來代替,也許這就是爲什麼我找不到有效答案的原因。display:inline-block forces new line
鑑於以下片段,有3個框。 #b1
的高度與#b2
和#b3
的高度一致。是否有可能直接在#b2
下顯示#b3
而不是新行?
我不太喜歡float
因爲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>
當然,它會強制新行,因爲您將前兩個元素的寬度設置爲50%,並且第三個元素沒有可用空間。 –
不,自從你消除了漂浮物以後就沒有了。所有其他當前佈局方法(不包括支持零的CSS網格)(不包括定位)需要額外的包裝器(*除非容器的高度已知*) –
您仍然可以不使用'clear'來使用'float'。由於你的盒子最終具有相同的高度,下一個元素將放置在下面:[demo](https://jsfiddle.net/ou70kvor/) – insertusernamehere