CSS - 每行三个容器

CSS - Three containers per row

我的网站上每行有三个左浮动容器,宽度为 33%,我想为新行的第一个提供属性 clear: both,因为有 12 个容器。

有没有更简单的方法来确定选择器? 这是我的方法:

.container:nth-of-type(4), .container:nth-of-type(7), .container:nth-of-type(10) {
    clear: both;
}

我也用“3n”尝试过一些东西,但它对我不起作用...

我知道这行不通...但是有这样的东西吗?

.container:nth-of-type(4,7,10) {
    clear: both;
}

或者有更好的方法吗?感谢每一个答案,谢谢。

.container {
  width: calc((100% - 120px)/3); /* calc because of the padding */
  padding: 0px 20px;
  height: 300px;
  background-color: red;
  float: left;
  display: block;
}

.container:nth-of-child(4), .container:nth-of-child(7), .container:nth-of-child(10) {
  clear: both;
} 
<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

nth-of-type 伪选择器的工作方式类似于代数方程。如果您使用 nth-of-type(3n),它将以第 0、3、6 等元素为目标。您需要加 1,使其 nth-of-type(3n+1) 定位到第 1、4、7 等

.container {
  width: calc((100% - 130px)/3); /* calc because of the padding */
  padding: 0px 20px;
  height: 300px;
  background-color: red;
  border: 1px solid black;
  float: left;
  display: block;
}

.container:nth-of-child(3n+1) {
  clear: both;
}
<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

<div class="container"></div>
<div class="container"></div>
<div class="container"></div>

尝试使用此代码

.container:nth-child(3n+1){
    clear: both;
}

您可以使用 :nth-of-type(3n+4),但如果使用 clear:both,所选容器将是行中的唯一容器。请改用 clear: left