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;}