而/ For Loop用于交替使用CSS类?

时间:2013-10-13 02:59:13

标签: php css

我写了一个简单的while循环:

while($fetch = $stm->fetchAll()) {
    echo '<tr class=""'>;
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
}

我怎样才能使class =“”每次都交替,以便每隔一行是白色而其他每一行都是灰色的?我已经有了CSS类“greyRow”,但不知道如何在逻辑上使用它来使它们在PHP中交替使用。

我认为我需要一个for循环,但是如何将它用于我想要做的事情呢?

感谢。

3 个答案:

答案 0 :(得分:2)

一种简单的方法是将变量实现为“count”

$odd_row = 1;
while($fetch = $stm->fetchAll()) {
    if ($odd_row == 0) 
        echo '<tr>';
    else
        echo '<tr class="greyRow">';
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
    $odd_row = !$odd_row;
}

但是有更好的方法,严格使用CSS。

Using CSS :even and :odd pseudo-classes with list items

答案 1 :(得分:2)

如果您在偶数行上$counter % 2 == 0(或!($counter % 2)),则可以使用计数器变量。否则很奇怪。

$counter = 1;
while($fetch = $stm->fetchAll()) {
    echo '<tr class="', (!($counter % 2) ? 'even' : 'odd'), '">';
    echo '<td>' . $fetch['name'] . '</td>';
    echo '</tr>';
    $counter++;
}

您也可以尝试使用nth-child CSS选择器,并避免在PHP中执行此操作。但是,它不是跨浏览器。如果你需要支持IE&lt; 8,你需要做到以上几点。

示例:

#your-table tr:nth-child(odd) {
   // style odd rows differently
}

答案 2 :(得分:1)

这是我的方法:

while($fetch = $stm->fetchAll()) {

  if( !isset( $row_num ) ) $row_num = 1; // at first $row_num does not exist so create it and make uneven (start with 1)
  $row_class = (++$row_num % 2) ? 'even' : 'odd'; // then check whether $row_num is odd or even and assign it the corresponding class name

  echo '<tr class="'.$row_class.'">';
  echo '<td>' . $fetch['name'] . '</td>';
  echo '</tr>';
}