CSS在每个孩子之后清除

我有一个容器内有多个宽度相同的项目。 由于元素的高度不同,alignment方式有问题,您可以在下面的图像中看到。

我想在每一个第三个项目之后清除而不改变html标记,以便第四个项目进入下一行。 我试图添加n-child(3):之后,但似乎不起作用。

在这里输入图像说明

代码如下:

HTML:

<div class="list"> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet, consectetur adipiscing elit. </div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet</div> </div> 

CSS:

 .item:nth-child(3):after{ content: "."; display: block; height: 0; clear: both; visibility: hidden; } 

演示: http : //jsfiddle.net/KPXyw/

其实是的

 .item:nth-child(3n+1){ clear:left } 
 .item:nth-child(3n+1){ clear:left } 

更新小提琴

你应该使用nth-child(3n+1)这样它会发生在孩子之后的每个孩子3 nth-child(3n+1) ,不仅在第3个孩子。

然后,你应该删除:after ,你想清除实际的孩子。

sabof是对的。 但是,如果使用display: inline-block而不是float:left那将会很好。 请看下面的例子。

 .list { width: 300px; font-size: 0; } .item { display: inline-block; width: 90px; font-size: 16px; background: yellow; margin-right: 5px; margin-bottom: 10px; vertical-align: top; } 
 <div class="list"> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet</div> </div> 

您可以使用:

 .list { display:flex; flex-wrap: wrap; ... } 

见下文:

 .list { width: 300px; overflow: hidden; display: flex; flex-wrap: wrap; } .item { float: left; width: 90px; background: yellow; margin-right: 5px; margin-bottom: 10px; } .item:nth-child(3) { background: brown; } .item:nth-child(3):after { content: "."; display: block; height: 0; clear: both; visibility: hidden; } 
 <div class="list"> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet, consectetur adipiscing elit.</div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet,</div> <div class="item">Lorem ipsum dolor sit amet</div> </div> 

尝试这个工作

 .list{ width: 300px; overflow: hidden; } .item{ float: left; width: 90px; background: yellow; margin-right: 5px; margin-bottom: 10px; } .item:nth-child(4){ //background: brown; clear:both; } 

这些只需要。

使用下面的代码

 .item:nth-child(4){clear:both;}