css - 柔性砌体效果未正确包裹

标签 css flexbox

我试图用 flex 实现以下布局,但似乎无法实现:

* {
  box-sizing: border-box;
}

.box {
  border: 1px solid black;
  width: 50%;
  padding-top: 25%;
  float: left;
}

.box:first-child {
  padding-top: 50%;
}

.box:nth-last-child(-n+2) {
  width: 25%;
}
<div class="wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

如果我尝试使用 flex-direction 行,它会将最后两个框包裹在第一个左边的框下

* {
  box-sizing: border-box;
}

.wrapper {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.box {
  border: 1px solid black;
  width: 50%;
  padding-top: 25%;
}

.box:first-child {
  padding-top: 50%;
}

.box:nth-last-child(-n+2) {
  width: 25%;
}
<div class="wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

如果我使用 flex 方向列,我会靠近但必须设置一个高度,这意味着我会失去响应能力

* {
  box-sizing: border-box;
}

.wrapper {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  height:400px;
  width:100%;
}

.box {
  border: 1px solid black;
  width: 50%;
  padding-top: 25%;
}

.box:first-child {
  padding-top: 50%;
}

.box:nth-last-child(-n+2) {
  width: 25%;
}
<div class="wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

有没有办法在没有固定高度或改变 html 结构的情况下使用 flex 实现这种布局?

最佳答案

使用 flexbox 你可以考虑一些hack 来近似这个。一个技巧是有两行(保持行方向)并在第一个元素上使用负边距使其与第二行重叠:

* {
  box-sizing: border-box;
}

.wrapper {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
}

.box {
  outline: 1px solid black;
  width: 50%;
  padding-top: 25%;
}

.box:first-child {
  padding-top: 25%;
  margin-bottom:-25%;
}

.box:nth-last-child(-n+2) {
  width: 25%;
}
.box:nth-child(3) {
  margin-left:auto;
}
<div class="wrapper">
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
  <div class="box"></div>
</div>

关于css - 柔性砌体效果未正确包裹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54632489/

相关文章:

css - 整个页面的字体系列应该在哪里定义?

javascript - Textfield allowBlank/Focus 和 invalid-cls 问题

html - 将装订线添加到 bootstrap flexbox 网格

html - 可以使用 CSS Flexbox 在每一行上拉伸(stretch)元素同时保持一致的宽度吗?

css - 具有固定列宽的 Flexbox

css - SharePoint - 远程计算机显示错误的设计

html - 管理内联列表项之间空白的最佳方式

html - 全局阻止 Firefox 中的文本选择

html - 链接应该使用 flexbox 在同一行

CSS - flex 、最大宽度