css - 如何将列与 flexbox 对齐?

标签 css flexbox multiple-columns

我目前正在学习 Flexbox 布局,但找不到解决问题的方法。

我尝试使用 justify-content 和 flex-basis,但它不起作用。有没有人有解决办法?

我想要的结果:here

section {
  display: flex;
  margin: 0 auto;
  justify-content: space-between;
}

.column {
  width: 100%;
  background-color: #e2e2e2;
  padding: 1%;
  margin: 1%;
  flex-grow: 1;
  flex-shrink: 1;
  flex-basis: 0;

}

#first {
  flex-grow: 2;
  flex-shrink: 2;
  flex-basis: 0;
}
<section>
  <div class="column" id="first">First</div>
  <div class="column" id="second">Second</div>
  <div class="column">Third</div>
</section>
<section>
  <div class="column">First</div>
  <div class="column">Second</div>
  <div class="column">Third</div>
  <div class="column">Fourth</div>
</section>

https://jsfiddle.net/qdsbacvn/

最佳答案

这是 CSS 网格的完美用例,您不需要大量复杂的代码:

section {
  display: grid;
  margin: 2% auto;
  grid-gap:2%;
  grid-template-columns:repeat(4,1fr);
}

.column {
  background-color: #e2e2e2;
  padding: 5px;
}

#first {
  grid-column:span 2;
}
<section>
  <div class="column" id="first">First</div>
  <div class="column" id="second">Second</div>
  <div class="column">Third</div>
</section>
<section>
  <div class="column">First</div>
  <div class="column">Second</div>
  <div class="column">Third</div>
  <div class="column">Fourth</div>
</section>

使用 flexbox 你可以尝试以下方法:

section {
  display: flex;
}

.column {
  background-color: #e2e2e2;
  padding: 1%;
  margin: 1%;
  flex-grow: 1;
  flex-basis: 0;
}

#first {
  flex-grow: 2;
  flex-basis:4%; /*2 x (padding + margin)*/
}
<section>
  <div class="column" id="first">First</div>
  <div class="column" id="second">Second</div>
  <div class="column">Third</div>
</section>
<section>
  <div class="column">First</div>
  <div class="column">Second</div>
  <div class="column">Third</div>
  <div class="column">Fourth</div>
</section>

由于您使用的是 flex-basis:0,因此在计算可用空间之前只考虑填充/边距。诀窍是确保我们在两种情况下都有相同的可用空间,因此我们向大元素的 flex-basis 添加第一种情况下不存在的边距/填充。

enter image description here

关于css - 如何将列与 flexbox 对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543039/

相关文章:

javascript - 页脚动态排序元素

css - 元素的绝对定位会在 <html> 上产生不需要的水平滚动条,尽管没有元素超出视口(viewport)

css - 在图片的 div 上强制透明边框?

html - IE11 Flexbox 布局在滚动容器中损坏

html - 如何在当前编码中添加第三列?

php - 页面加载时有时会出现 jQuery CSS 'display: none' 问题

html - 用 flex 将一些元素组合在一起?

html - css flex 2x2 网格全屏居中 ImageView 裁剪

excel - 多次使用替代函数,但应将结果合并在一列和单元格中

r - 将多个 bool 列转换为单个因子列