使用 flexbox 连续调整 3 个框

Adjust 3 box in a row using flexbox

我想连续放置 3 个 Box,第二行再放置 3 个。如果我不添加 margin: 2px;width: calc(33%-4px);,这工作正常。但是,如果我添加 margin: 2px; 并将宽度调整为 width: calc(33% - 4px);,那么所有内容都会出现在同一行中。请让我知道我在这里使用 width calc 方法做错了什么。

代码不正确 -

.container { display: flex; flex-wrap: wrap; }
.box { 
  flex-grow: 1; 
  width: calc(33%-4px); 
  height: 100px; 
  background: green;
  margin: 2px;
 }
<div class="container">
  <div class="box">Box 1</div>
  <div class="box">Box 2</div>
  <div class="box">Box 3</div>
  <div class="box">Box 4</div>
  <div class="box">Box 5</div>
  <div class="box">Box 6</div>
</div>

工作代码-

.container { display: flex; flex-wrap: wrap; }
.box { 
  flex-grow: 1; 
  width: 33%; 
  height: 100px; 
  background: green;
 }
<div class="container">
  <div class="box">Box 1</div>
  <div class="box">Box 2</div>
  <div class="box">Box 3</div>
  <div class="box">Box 4</div>
  <div class="box">Box 5</div>
  <div class="box">Box 6</div>
</div>

margin 应该匹配 calc(100% - <this value here>px)
另请注意 空格 calc(<value>(space)<operator>(space)<value>) 工作所必需的!

.container { display: flex; flex-wrap: wrap; }
.box { 
  flex-grow: 1; 
  width: calc(33% - 2px); 
  margin: 2px;
  height: 100px; 
  background: green;
 }
<div class="container">
  <div class="box">Box 1</div>
  <div class="box">Box 2</div>
  <div class="box">Box 3</div>
  <div class="box">Box 4</div>
  <div class="box">Box 5</div>
  <div class="box">Box 6</div>
</div>

改变

width: calc(30%-4px)

width: calc(30% - 4px);