html - Flexbox,如何在 400 像素处保持至少 2 列?

标签 html css flexbox flexboxgrid

https://codepen.io/leon-yum/pen/XYpgzj?editors=1100

我试图确保在移动设备(400 像素及以下)上我的 flexbox 网格坚持 2 列/框。但是无论我做什么,它要么对齐到 1 列,要么每行分别保持在 3 列或 4 列。

预期宽度为 400 像素:

enter image description here

结果:

enter image description here

HTML

<div class="flex-grid-thirds">
  <div class="col">This little piggy went to market.</div>
  <div class="col">This little piggy stayed home.</div>
  <div class="col">This little piggy had roast beef.</div>
</div>

<div class="flex-grid-four">
  <div class="col">This little piggy went to market.</div>
  <div class="col">This little piggy stayed home.</div>
  <div class="col">This little piggy had roast beef.</div>
  <div class="col">This little piggy had roast beef.</div>
</div>

CSS

.flex-grid-thirds,
.flex-grid-four {
  display: flex;
  justify-content: space-between;
  margin-bottom: 20px;
}

.flex-grid-thirds .col {
  width: 32%;
}

.flex-grid-four .col {
  width: 24%;
}

@media (max-width: 400px) {
  .flex-grid-thirds,
  .flex-grid-four {
    .col {
      width: 40%;
    }
  }
}

* {
  box-sizing: border-box;
}
body {
  padding: 20px;
}
.flex-grid { 
  margin: 0 0 20px 0;
}
.col {
  background: salmon;
  padding: 20px;
}

最佳答案

这是有效的解决方案:https://codepen.io/anon/pen/vrgZVa?editors=1100 . 您所需要的只是将所有元素放在一个包装器元素中(现在您有 2 个元素),并为该包装器提供 flex-wrap: wrap 属性。还有一件事要做:给你的元素宽度(最好是百分比),如果你给它们 width: 50%,将有 2 列,如果 width: 33 % - 3 列等等。我没有触及边距和这些小东西,只是展示你要求的东西:

.flex-grid {
  display: flex;
  justify-content: space-between;
  margin-bottom: 20px;
  flex-wrap: wrap;
}

.flex-grid-thirds .col {
  width: 32%;
}

.flex-grid-four .col {
  width: 24%;
}

@media (max-width: 400px) {
  .flex-grid {
    .col {
      width: 50%;
    }
  }
}

* {
  box-sizing: border-box;
}

body {
  padding: 20px;
}
.flex-grid { 
  margin: 0 0 20px 0;
}
.col {
  background: salmon;
  padding: 20px;
}
<div class="flex-grid">
  <div class="col">This little piggy went to market.</div>
  <div class="col">This little piggy stayed home.</div>
  <div class="col">This little piggy had roast beef.</div>
  <div class="col">This little piggy went to market.</div>
  <div class="col">This little piggy stayed home.</div>
  <div class="col">This little piggy had roast beef.</div>
  <div class="col">This little piggy had roast beef.</div>
</div>

关于html - Flexbox,如何在 400 像素处保持至少 2 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50776653/

相关文章:

html - 当父级具有设置的宽度时,Flex-wrap 属性不响应

html - 列表样式 : none is not working well

javascript - 菜单导航栏网页: dynamic menu windows.画面

javascript - Chrome 应用程序 将一个页面打开到另一个页面

jquery - .addClass - 如何从链接的 CSS 调用 CSS?

html - 无法滚动到容器溢出的 flex 元素顶部

javascript - 如何将 base64 转换为 html 文件?

css - Bootstrap 4 - 列堆叠而不是水平相邻

html - 在 HTML 选择下拉选项中设置下拉元素的宽度

html - 使 flex 容器采用内容的宽度,而不是宽度 100%