我有一个如下结构:
<div class="wrapper"...>
<a href="#"...>blah</a>
<div class="post"...>stuff</div>
</div>
它在整个动态页面中重复了几次。我想用两种颜色交替 div 类“post”的背景颜色,但 CSS 的 nth-child 伪类似乎只适用于直接顺序的项目。
有没有办法(CSS、Javascript、jQuery 等)我可以交替 div 背景颜色?
我有一个如下结构:
<div class="wrapper"...>
<a href="#"...>blah</a>
<div class="post"...>stuff</div>
</div>
它在整个动态页面中重复了几次。我想用两种颜色交替 div 类“post”的背景颜色,但 CSS 的 nth-child 伪类似乎只适用于直接顺序的项目。
有没有办法(CSS、Javascript、jQuery 等)我可以交替 div 背景颜色?
jQuery 的 :odd 和 :even 选择器非常方便:
$(".post:even").css("background-color","blue");
$(".post:odd").css("background-color","red");
HTML:
<div class="wrapper">
<a href="#">blah</a>
<div class="post">stuff</div>
</div>
<div class="wrapper">
<a href="#">blah</a>
<div class="post">stuff</div>
</div>
...
http://jsfiddle.net/thomas4g/uaYd9/2/
编辑:
非 jQuery 的快速 JS 方式:
var posts = document.getElementsByClassName("post");
for(var i=0;i<posts.length;i++) {
posts[i].classList.add(i % 2 === 0 ? "even" : "odd");
//or
posts[i].style["background-color"] = i % 2 === 0 ? "blue" : "red";
}
jquery方式:
$('.post:even').css('background-color','green');
$('.post:odd').css('background-color','red');
通常我所做的是在后端分配一个“奇数”或“偶数”的css类。例如,如果页面是在 PHP 中动态生成的,我会执行以下操作:
for ($i = 0; $i < count($rows); $i++) {
$css_class = 'wrapper '; // Elements can have multiple css classes
$css_class .= $i % 2 == 0 ? 'row_odd' : 'row_even';
// generate html using class="$css_class"...
}
然后在您的班级中定义您希望交替 div 具有的颜色。
.row_odd { background-color: white; }
.row_even { background_color: #e0e0ff; }
可以很容易地用 jquery:odd
和选择器完成::even
$(".wrapper div.post:odd").addClass('odd');
$(".wrapper div.post:even").addClass('even');
.post:nth-child(odd)
不适合你吗?