2列响应砖石般的布局没有JavaScript?

时间:2016-08-08 17:01:45

标签: html css flexbox

我有一些动态高度的div我想放在两列中,它们紧接着显示在另一列之后,理想情况下没有javascript(以及诸如packery,masonry等库)。

我已经开始display: inline-block jsbin

我也试过跟Easy Masonry Layout With Flexbox无效jsbin

我可以将DOM结构化为单独的列,但这并不理想,因为它们需要在移动设备上折叠成一列。

diagram

当然,简单地使用内联块会导致不必要的间隙:

unwanted gap

编辑:更新了图表,以便更清楚地了解所需结果 - 从左到右的列没有不必要的间隙

3 个答案:

答案 0 :(得分:4)

你应该将float:left css设置为你所有的div。

<div style="float:left; display:inline-block;">
   these divs will be displayed next to each other.
</div>

我希望这会对你有所帮助。

答案 1 :(得分:1)

您现在可以使用CSS columns而无需过多担心浏览器支持。较旧的IE版本是唯一可能的阻止程序,具体取决于您的受众。还有不少浏览器怪癖可以解决,但我现在已经在生产中使用它们了一段时间。对于今天的砖石式布局,这是你唯一真正的选择,不使用JS。

答案 2 :(得分:0)

这是一个可以使用flex的解决方案 CSS

.flex-container {padding: 0; margin: 0; list-style: none; display: -webkit-box; display: -moz-box; display: -ms-flexbox; display: -webkit-flex; display: flex; -webkit-flex-flow: row wrap; justify-content: space-around; }
.flex-item {background: tomato; padding: 5px; width: 200px; height: 150px; margin-top: 10px; line-height: 150px; color: white; font-weight: bold; font-size: 3em; text-align: center; } 
#fl-item{height:200px;}

和HTML

<ul class="flex-container">
  <li class="flex-item" id="fl-item">1</li>
  <li class="flex-item">2</li>
  <li class="flex-item">3</li>
  <li class="flex-item">4</li>
  <li class="flex-item">5</li>
  <li class="flex-item">6</li>
</ul>

你可以看到工作Plunker