【问题标题】:Display flex with mixed design [duplicate]具有混合设计的显示柔性 [重复]
【发布时间】:2019-02-26 18:35:40
【问题描述】:

用 flexbox 制作以下内容的最佳方法是什么?我想要 2 行等宽列,但是,最后一列是 100% 高度并填充该部分的其余部分。

最好为此使用多行吗?

.row {
  display: flex;
  flex-wrap: wrap-reverse;
}

.col {display:1;width:30%;background:red;}

.col:nth-of-type(3) {background:blue;}
<div class="row">
  <div class="col">
  test
  </div>
  <div class="col">
  test
  </div>
   <div class="col">
  test
  </div>
   <div class="col">
  test
  </div>
   <div class="col">
  test
  </div>
</div>

【问题讨论】:

    标签: html css flexbox css-grid


    【解决方案1】:

    这是使用CSS grid layout的解决方案:

    1. 使用display: gridrow 定义为网格容器
    2. 使用grid-template-columns: repeat(3, 1fr) 定义3 列布局
    3. 使用grid-template-rows: repeat(2, 1fr) 定义2 列布局
    4. 使用grid-row: span 2第三列扩展到所有行。
    5. 使用grid-gap 属性调整行和列之间的间隙

    请看下面的演示:

    .row {
      display: grid;
      grid-template-columns: repeat(3, 1fr); /* 3 equal columns */
      grid-template-rows: repeat(2, 1fr); /* 2 equal rows */
      grid-gap: 10px; /* gap between the rows & columns */
    }
    .col {
      background: red;
    }
    .col:nth-of-type(3) {
      background: blue;
      grid-row: span 2; /* span all the rows */
    }
    <div class="row">
      <div class="col">test</div>
      <div class="col">test</div>
      <div class="col">test</div>
      <div class="col">test</div>
      <div class="col">test</div>
    </div>

    【讨论】:

    • 这正是我所需要的。谢谢!
    • 有没有办法可以将第一列和第四列设为 50% 的宽度?
    • grid-template-columns: 50% repeat(2, 1fr) 我猜应该没问题(当然不用调整grid-gap)...grid-template-columns: calc(50% - 10px) repeat(2, 1fr) 调整grid-gap...
    • 抱歉 Kukkuz 我的意思是针对 2 号和 5 号。像这样:- project-progress.co.uk/aa.png
    • 太好了,谢谢!我只是想锻炼如何在 Flexbox 中使用多种设计。谢谢
    猜你喜欢
    • 2014-12-28
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多