使用CSS替代表格行颜色?

时间:2010-06-21 11:34:46

标签: html css html-table

我正在使用具有交替行颜色的表格。

tr.d0 td {
  background-color: #CC9999;
  color: black;
}
tr.d1 td {
  background-color: #9999CC;
  color: black;
}
<table>
  <tr class="d0">
    <td>One</td>
    <td>one</td>
  </tr>
  <tr class="d1">
    <td>Two</td>
    <td>two</td>
  </tr>
</table>

此处我使用的是tr类,但我只想用于table。当我使用table for table时,这适用于tr替代。

我可以使用CSS编写这样的HTML吗?

<table class="alternate_color">
    <tr><td>One</td><td>one</td></tr>
    <tr><td>Two</td><td>two</td></tr>
    </table>

如何使用CSS使行具有“zebra条纹”?

10 个答案:

答案 0 :(得分:738)

$(document).ready(function()
{
  $("tr:odd").css({
    "background-color":"#000",
    "color":"#fff"});
});
tbody td{
  padding: 30px;
}

tbody tr:nth-child(odd){
  background-color: #4C8BF5;
  color: #fff;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
<tbody>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>5</td>
<td>6</td>
<td>7</td>
<td>8</td>
</tr>
<tr>
<td>9</td>
<td>10</td>
<td>11</td>
<td>13</td>
</tr>
</tbody>
</table>

有一个CSS选择器,实际上是一个伪选择器,称为nth-child。在纯CSS中,您可以执行以下操作:

tr:nth-child(even) {
    background-color: #000000;
}

注意: IE 8中不支持。

或者,如果你有jQuery:

$(document).ready(function()
{
  $("tr:even").css("background-color", "#000000");
});

答案 1 :(得分:139)

你有:nth-child()伪类:

table tr:nth-child(odd) td{
}
table tr:nth-child(even) td{
}

:nth-child()的早期,browser support有点穷。这就是设置class="odd"成为一种常见技术的原因。在2013年底,我很高兴地说IE6和IE7终于死了(或者病态到足以停止关怀)但IE8仍然存在 - 幸运的是,它是the only exception

答案 2 :(得分:34)

只需将以下内容添加到您的html代码中(<head>内),即可完成。

HTML:

<style>
      tr:nth-of-type(odd) {
      background-color:#ccc;
    }
</style>

比jQuery示例更容易,更快。

答案 3 :(得分:12)

  

我可以用这个来写这样的html吗?   css?

是的,你可以,但是你必须使用 :nth-child() 伪选择器(虽然支持有限):

table.alternate_color tr:nth-child(odd) td{
   /* styles here */
}
table.alternate_color tr:nth-child(even) td{
   /* styles here */
}

答案 4 :(得分:10)

以上大多数代码都不适用于IE版本。适用于IE +其他浏览器的解决方案就是这样。

   <style type="text/css">
      tr:nth-child(2n) {
             background-color: #FFEBCD;
        }
</style>

答案 5 :(得分:10)

我们可以使用奇数和偶数CSS规则和jQuery方法来替换行颜色

使用CSS

table tr:nth-child(odd) td{
           background:#ccc;
}
table tr:nth-child(even) td{
            background:#fff;
}

使用jQuery

$(document).ready(function()
{
  $("table tr:odd").css("background", "#ccc");
  $("table tr:even").css("background", "#fff");
});

&#13;
&#13;
table tr:nth-child(odd) td{
           background:#ccc;
}
table tr:nth-child(even) td{
            background:#fff;
}
&#13;
<table>
  <tr>
    <td>One</td>
    <td>one</td>
   </tr>
  <tr>
    <td>Two</td>
    <td>two</td>
  </tr>
</table>
&#13;
&#13;
&#13;

答案 6 :(得分:9)

<script type="text/javascript">
$(function(){
  $("table.alternate_color tr:even").addClass("d0");
   $("table.alternate_color tr:odd").addClass("d1");
});
</script>

答案 7 :(得分:3)

您可以使用nth-child(奇数/偶数)选择器,但并非所有浏览器(ie 6-8, ff v3.0)都支持这些规则,因此为什么大多数解决方案都会回退到某种形式的javascript / jquery解决方案以将类添加到行中这些不兼容的浏览器可以获得老虎条纹效果。

答案 8 :(得分:3)

有一种相当简单的方法可以在PHP中执行此操作,如果我理解您的查询,我假设您使用PHP编写代码并使用CSS和javascript来增强输出。

数据库的动态输出将带有for循环以迭代结果,然后将结果加载到表中。只需添加一个函数调用:

echo "<tr style=".getbgc($i).">";  //this calls the function based on the iteration of the for loop.

然后将该函数添加到页面或库文件中:

function getbgc($trcount)
{

$blue="\"background-color: #EEFAF6;\"";
$green="\"background-color: #D4F7EB;\"";
$odd=$trcount%2;
    if($odd==1){return $blue;}
    else{return $green;}    

}

现在,这将在每个新生成的表行的颜色之间动态交替。

比使用不适用于所有浏览器的CSS更容易。

希望这有帮助。

答案 9 :(得分:0)

请尝试这种方式:它可以在 Html 文件中用于 WebView

<head>
    
    <style>
        table {
            border-collapse: collapse;
            width: 100%;
        }
          
        th, td {
            text-align: left;
            padding: 8px;
        }
          
        tr:nth-child(even) {
            background-color: Lightgreen;
        }
    </style>
</head>