2009-08-31 126 views
2

是否可以对替代表格行进行样式设置而不定义替代<tr>标签上的类别?有条件的替代表格行样式

使用下表,CSS是否可以定义交替行样式,而不必为行“row1/row2”给出交替行? row1可以是默认的,所以row2是问题。

<style> 
.altTable td { } 
.altTable .row2 td { background-color: #EEE; } 
</style> 

<table class="altTable"> 
<thead><tr><td></td></tr></thead> 
<tbody> 
    <tr><td></td></tr> 
    <tr class="row2"><td></td></tr> 
    <tr><td></td></tr> 
    <tr class="row2"><td></td></tr> 
</tbody> 
</table> 

回答

7
tr:nth-child(even) { background: #FFF; } 
tr:nth-child(odd) { background: #EEE; } 

不工作在IE,但它是一个纯粹的表象的东西,内容将正常工作无论如何,所以我认为这不是一个大问题 - 取决于您网站上常规IE用户的百分比。

+0

我想这可能是解决方案,我没有声明CSS2,所以当CSS3完全支持时,很高兴看到像这样的其他选项。 – 2009-08-31 14:04:50

0

在tbody上给出一行row2,然后使用类row1设置您的备用行。其他行将从tbody继承类row2。

<style> 
.row1 { color: red } 
.row2 { color: blue } 
</style> 

<table class="altTable"> 
<thead><tr><td></td></tr></thead> 
<tbody class="row2"> 
    <tr class="row1"><td>row 1</td></tr> 
    <tr><td>row 2</td></tr> 
    <tr class="row1"><td>row 1</td></tr> 
    <tr><td>row 2</td></tr> 
</tbody> 
</table> 
2

是的!你可以用纯CSS和浏览器不上课做支持CSS的“+”选择:

.altTable tr td, 
.altTable tr+tr+tr td, 
.altTable tr+tr+tr+tr+tr td { background-color: #EEE; } 

.altTable tr+tr td, 
.altTable tr+tr+tr+tr td, 
.altTable tr+tr+tr+tr+tr+tr td{ background-color: #fff; } 

可能不是最好的办法,但可行的。

如果你不介意一点点的Javascript,jQuery的给它给你多少简洁:

$('.altTable tr:odd').addClass('odd'); 
+0

是的风格完美工作...但讨厌50 +行!我认为jQuery现在会运行良好。 – 2009-08-31 07:00:19

+0

是的jQuery与$(文档).ready(函数(){我的行也有一个:悬停,现在已被破坏 - 这将是jquery,像$('。altTable tr:odd:hover') .addClass('odd:hover'); – 2009-08-31 07:13:58