Flexbox,如何在400px保持至少2个cols?

时间:2018-06-09 17:06:19

标签: html css flexbox flexboxgrid

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

我试图确保在移动设备(400px及以下)上我的flexbox网格粘贴到2个cols / box。无论我做什么,它都会捕捉到1列,或者每行分别保持3个col或4个col。

预计宽度为400px:

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;
}

1 个答案:

答案 0 :(得分:1)

以下是工作解决方案:https://codepen.io/anon/pen/vrgZVa?editors=1100。 您只需要将所有项目放在一个包装元素中(现在您有2个元素),并为此包装器提供flex-wrap: wrap属性。还有一件事要做:给你的商品宽度(百分比是可取的),如果你给他们width: 50%,你会有2列,如果width: 33% - 3列,依此类推。我没有触及边距和这么小的东西,只是展示你的要求:

&#13;
&#13;
.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;
}
&#13;
<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>
&#13;
&#13;
&#13;