在 3 行网格中浮动 div,中间行顶部偏移

floated divs in 3-a-row grid, middle row with top offset

我如何根据所附图片实现此目的?

如您所见,我向左浮动了等宽块,但我希望中间行与左右行相比有一点偏移。

是否可以仅使用普通 css、flexbox?还是我必须使用砖石之类的东西?

我尝试对中间行的每个块应用上边距,但这不起作用:

.block {
 background-color:red;
 height:200px;
 width:33.333%;
 border:1px solid black;
 float:left;
 box-sizing: border-box;
}

.block:nth-child(3n+2) {
 margin-top:10px;
 background:blue;
 color:white;
}

https://jsfiddle.net/oaLh13dL/2/

您可以使用 Flexbox 而不是浮点数。

.block_wrap {
  display: flex;
  flex-wrap: wrap;
}
.block {
  background-color: red;
  height: 200px;
  flex: 0 0 calc(33.333% - 20px);
  border: 1px solid black;
  box-sizing: border-box;
  margin: 0 10px;
}
.block:nth-child(3n+2) {
  margin-top: 10px;
  background: blue;
  color: white;
}
<div class="block_wrap">
  <div class="block">1</div>
  <div class="block">2</div>
  <div class="block">3</div>
  <div class="block">4</div>
  <div class="block">5</div>
  <div class="block">6</div>
  <div class="block">7</div>
  <div class="block">8</div>
</div>