html - 如何使用 Flexbox 创建多列和多行

标签 html css flexbox grid

<分区>

鉴于我有以下标记:

<ul class="box">
  <li class="list-item A">
    <a>A</a>
  </li>
  <li class="list-item B">
    <a>B</a>
  </li>
  <li class="list-item C">
    <a>C</a>
  </li>
   <li class="list-item D">
    <a>D</a>
  </li>
</ul>

如何使用 Flexbox 获得以下布局?

enter image description here

我用我试过的方法创建了一支笔,但它不工作:

https://codepen.io/pbul2004/pen/LYEROLq

  • A = 25% 的图像
  • B = A 标题和副标题占 50%
  • C = 50% 的描述
  • D = Pirce 和一个 25% 的按钮

B 和 C 位于彼此之上。

最佳答案

你需要一个设置高度来将 flex 元素包裹到列中:

* {
  margin: 0;
  padding: 0;
  list-style: none;
  box-sizing: border-box;
}

.box {
  display: flex;
  height: 100vh;
  flex-flow: column wrap;
}

.list-item {
  flex: 1;
  border: red solid;
 /* width: 33.33%;*/
}

.A,
.D {
  min-height: 100%;
}
.A {width:20%;}
.D{width:15%;}
.B,.C {width:65%}
<ul class="box">
  <li class="list-item A">
    <a>A</a>
  </li>
  <li class="list-item B">
    <a>B</a>
  </li>
  <li class="list-item C">
    <a>C</a>
  </li>
  <li class="list-item D">
    <a>D</a>
  </li>
</ul>

如果您无法设置高度,则网格会为您完成这项工作。

* {
  margin: 0;
  padding: 0;
  list-style: none;
  box-sizing: border-box;
}

.box {
  display: grid;
  grid-template-columns: 20% 1fr 15%;
  flex-flow: column wrap;
  
  /* for demo */
  min-height: 50vh;
  transition:0.2s;
  /* for demo, use content instead */
}
.box:hover {min-height:100vh;}

.list-item {
  border: red solid;
}

.A,
.D {
  grid-row: 1 / span 2;
}

.A {
  grid-column: 1;
}

.B {
  grid-row: 1;
  grid-column: 2;
}

.C {
  grid-column: 2;
  grid-row: 2
}

.D {
  grid-column: 3:
}
<ul class="box">
  <li class="list-item A">
    <a>A</a>
  </li>
  <li class="list-item B">
    <a>B</a>
  </li>
  <li class="list-item C">
    <a>C</a>
  </li>
  <li class="list-item D">
    <a>D</a>
  </li>
</ul>

作为教程或提醒:https://css-tricks.com/snippets/css/a-guide-to-flexbox/ & https://css-tricks.com/snippets/css/complete-guide-grid/

关于html - 如何使用 Flexbox 创建多列和多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59337428/

相关文章:

php - 从html表格单元格分配php变量值

javascript - 使用 jquery 添加和删除内容

具有单个容器和不同大小元素的 CSS flexbox

javascript - 当网格上面的内容被隐藏时,如何向上滑动网格?

javascript - 如何克隆 div 低音选择选项

javascript - 如何更改 <meter> 值?

html - 我可以使用 Bootstrap 来设计 HTML 电子邮件模板吗

html - 多个背景定义一个大小的css

html - 在 Bootstrap 4 中裁剪和居中图像以圈出

html - 如何让DIV的宽度取决于它的内容然后居中对齐?