flex 布局
方案一
.container {
display: flex;
flex-wrap: wrap;
}
.item {
width: 24%;
background-color: #eee;
margin-bottom: 20px;
}
.item:not(:nth-child(4n)) {
margin-right: calc(4% / 3);
}
<p>--------flex 布局--------</p>
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
<div class="item">6</div>
</div>

方案二(子元素宽度固定,margin固定)
.container-flex {
border: 1px solid #000;
margin: 0 auto;
width: 860px;
display: flex;
flex-wrap: wrap;
}
.container-flex-item {
width: 200px;
background-color: #eee;
margin-bottom: 20px;
}
.container-flex-item:not(:nth-child(4n)) {
margin-right: 20px;
}
<p>--------flex 布局2 子元素宽度固定,margin固定--------</p>
<div class="container-flex">
<div class="container-flex-item">1</div>
<div class="container-flex-item">2</div>
<div class="container-flex-item">3</div>
<div class="container-flex-item">4</div>
<div class="container-flex-item">5</div>
<div class="container-flex-item">6</div>
</div>

grid 布局
方案一(固定列数)
.container-grid1 {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 20px 10px;
}
.item-grid1 {
background: #eee;
}
<p>--------grid 布局1--------</p>
<div class="container-grid1">
<div class="item-grid1">1</div>
<div class="item-grid1">2</div>
<div class="item-grid1">3</div>
<div class="item-grid1">4</div>
<div class="item-grid1">5</div>
<div class="item-grid1">6</div>
</div>

方案二(子元素宽度固定)
.container-grid {
display: grid;
justify-content: space-between;
grid-template-columns: repeat(auto-fill, 100px);
grid-gap: 20px 10px;
}
.item-grid {
width: 100px;
height: 100px;
background: #eee;
}
<p>--------grid 布局2,子元素宽度固定,列数不固定,适用于自适应布局--------</p>
<div class="container-grid">
<div class="item-grid">1</div>
<div class="item-grid">2</div>
<div class="item-grid">3</div>
<div class="item-grid">4</div>
<div class="item-grid">5</div>
<div class="item-grid">6</div>
</div>
