Альтернативный цвет фона div - PullRequest
14 голосов
/ 30 мая 2011

У меня есть такая структура:

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

И это повторяется на динамической странице несколько раз. Я хотел бы чередовать цвета фона класса div "post" с двумя цветами, но псевдо-класс CSS nth-child, похоже, работает только с элементами, которые являются последовательными.

Есть ли способ (CSS, Javascript, jQuery и т. Д.), Которым я могу чередовать цвета фона div?

Ответы [ 6 ]

27 голосов
/ 30 мая 2011

Селекторы 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";
}
7 голосов
/ 30 мая 2011

способ jquery:

$('.post:even').css('background-color','green');
$('.post:odd').css('background-color','red');
2 голосов
/ 30 мая 2011

Обычно я назначаю класс 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; }
1 голос
/ 30 мая 2011
.post:nth-child(odd)

У тебя не работает?

1 голос
/ 30 мая 2011

Можно сделать с помощью селекторов jquery :odd и :even довольно просто:

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

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

0 голосов
/ 30 мая 2011
:even Selector

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

Я надеюсь, что это поможет вам

...