替代 div 背景颜色

发布于 2024-11-10 12:31:56 字数 306 浏览 6 评论 0原文

我的结构如下:

<div class="wrapper"...>
   <a href="#"...>blah</a>
   <div class="post"...>stuff</div>
</div>

它在动态页面中重复几次。我想用两种颜色替换 div 类“post”的背景颜色,但 CSS 的 nth-child 伪类似乎只适用于直接连续的项目。

有没有办法(CSS、Javascript、jQuery 等)可以改变 div 背景颜色?

I have a structure like the following:

<div class="wrapper"...>
   <a href="#"...>blah</a>
   <div class="post"...>stuff</div>
</div>

And it repeats throughout a dynamic page a few times. I would like to alternate the background colors of the div class "post" with two colors, but CSS's nth-child pseudo class only seems to work with items that are directly sequential.

Is there a way (CSS, Javascript, jQuery, etc.) that I can alternate the div background colors?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

好菇凉咱不稀罕他 2024-11-17 12:31:56

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's :odd and :even selectors are pretty handy:

$(".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/

EDIT:

The non-jQuery, quick JS way:

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";
}
风透绣罗衣 2024-11-17 12:31:56

jquery方式:

$('.post:even').css('background-color','green');
$('.post:odd').css('background-color','red');

the jquery way:

$('.post:even').css('background-color','green');
$('.post:odd').css('background-color','red');
烏雲後面有陽光 2024-11-17 12:31:56

通常我所做的就是在后端分配一个“奇数”或“偶数”的 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; }

Typically what I do is assign a css class of "odd" or "even" on the back end. For example, if the page is dynamically generated in PHP, I'd do something like:

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"...
}

Then define in your class the colors you want the alternating divs to have.

.row_odd { background-color: white; }
.row_even { background_color: #e0e0ff; }
〃安静 2024-11-17 12:31:56

可以使用 jquery :odd:even 选择器轻松完成:

$(".wrapper div.post:odd").addClass('odd'); 
$(".wrapper div.post:even").addClass('even'); 

http://jsfiddle.net/niklasvh/fULRZ/

Can be done with jquery :odd and :even selectors quite easily:

$(".wrapper div.post:odd").addClass('odd'); 
$(".wrapper div.post:even").addClass('even'); 

http://jsfiddle.net/niklasvh/fULRZ/

我不吻晚风 2024-11-17 12:31:56
.post:nth-child(odd)

不适合你吗?

.post:nth-child(odd)

Doesn't work for you?

七七 2024-11-17 12:31:56
:even Selector

http://api.jquery.com/even-selector/

我希望这会对您有所帮助

:even Selector

http://api.jquery.com/even-selector/

I hope this will hep you

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文