对于现代浏览器,纯 CSSnth-child
选择器就足够了:
.post:nth-child(3n) { /* not zero-based */
margin-right: 0px;
}
http://jsfiddle.net/mblase75/EQacc/
如果在 first 之前还有其他兄弟元素div.post
,您将需要使用nth-of-type
:
.post:nth-of-type(3n) {
margin-right:0px;
}
http://jsfiddle.net/mblase75/4vnjt/
对于较旧的浏览器(包括 IE8 和更早版本),需要一些 JavaScript。我会使用 jQuery 为每第三个项目添加一个类,并将该类添加到我的 CSS 中:
.post.thirdchild, .post:nth-child(3n) {
margin-right: 0px;
}
jQuery:
$('.post:nth-of-type(3n)').addClass('thirdchild');
http://jsfiddle.net/mblase75/Tf9ky/
为什么包括两者?好吧,有些用户可能关闭了 JavaScript。
事实上,如果您担心 IE<8,理想的解决方案可能是将 0px 作为默认边距,这样帖子就不会溢出其容器:
.post {
position: relative;
float: left;
margin-right: 0px;
}
.post.notthirdchild,
.post:nth-child(3n+1),
.post:nth-child(3n+2) {
margin-right: 10px;
}
JS:
$('.post:nth-child(3n+1),.post:nth-child(3n+2').addClass('notthirdchild');
http://jsfiddle.net/mblase75/nBLxc/