html - 两列 flex 盒布局

标签 html css flexbox

我需要创建布局,其中包含两列中的元素列表。就像我在下面展示的那样:

.container {
  border: 1px solid red;
  height: 300px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  flex-wrap: wrap;
}

.item {
  border: 1px dashed blue;
  height: 50px;
}
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
  <div class="item">7</div>
  <div class="item">8</div>
</div>
但是这样的布局有一个问题。如果只有 1 项 - 它将占用全宽。即使有几个元素,我也需要保留列。

最佳答案

您可以为元素设置最大宽度,等于 50%。无论如何,这将使它几乎保持相同的宽度。我说几乎是因为您还设置了边界。

为了保持宽度完全一致,还必须为item设置box-sizing: border-box。

因此,您的代码将是:

.item {
  border: 1px dashed blue;
  height: 50px;
  box-sizing: border-box;
  max-width: 50%;
}

.container {
  border: 1px solid red;
  height: 300px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  flex-wrap: wrap;
}

.item {
  border: 1px dashed blue;
  height: 50px;
  box-sizing: border-box;
  max-width: 50%;
}
<div class="container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
  <div class="item">7</div>
  <div class="item">8</div>
</div>

关于html - 两列 flex 盒布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44242141/

相关文章:

css - 如果另一个区域随着 CSS 增长,如何缩小一个区域?

javascript - 从具有相同类的字段中获取值,添加到数组

css - 是否可以将本地 css 文件加载到某些域的浏览器?

css - 如何在列方向上对所有 flex 元素平均拉伸(stretch)高度?

css - 嵌套列内的 Bootstrap 行,响应高度

jquery - 如何控制jQuery slideToggle下推的div

Javascript 触发 Tropo 脚本问题

javascript - 是否可以通过 CSS 将输入字段设置为只读?

html - 按高度百分比设置多个 div 以填充父 div

html - 动画 flex 过渡