我有一个包含50个条目的表格,其中一些条目有一个'事件'或者'评论。'表格行条目如下所示:
活动,评论,活动,评论,评论,评论,活动
我想要做的是交替'事件'的行颜色。并且评论'类名分开。目前我所拥有的是:
tr.event:nth-child(odd) {
background-color: #000;
}
tr.comment:nth-child(odd) {
background-color: #000;
}
使用此代码,我得到一个输出:
黑色(事件),白色(评论),黑色(事件),白色(评论),黑色(评论),白色(评论),黑色(事件)
我希望输出为:
黑色(事件),黑色(评论),白色(事件),白色(评论),黑色(评论),白色(评论),黑色(事件)
任何帮助都会很棒!
答案 0 :(得分:0)
我认为纯css是不可能的。
可以在此处找到对同一问题的非常好的回复:Can I combine :nth-child() or :nth-of-type() with an arbitrary selector?
我建议的是:为每个奇数元素添加一个新类,并相应地设置一个。
所以你会有
.comment
.event
.comment.odd
.event.odd
.event
.event.odd
.comment
等
否则,您可以使用js来完成。但额外的类方法应该足够好。
答案 1 :(得分:0)
您尝试使用非分层HTML结构表示基本上是分层数据。 nth-child
指的是其父级中的子级,而不是所有具有某个共享类的子级。所以基本上,你不能在CSS中做到这一点。
如果可以的话,尝试按照这样构建HTML:
<div>
<div class="event">
<div class="comment"></div>
</div>
<div class="event">
<div class="comment"></div>
<div class="comment"></div>
<div class="comment"></div>
</div>
<div class="event">
</div>
</div>
现在您可以使用
设置此样式.event:nth-child(odd) { color: white; }
.event:nth-child(even) { color: black; }
.comment:nth-child(odd) { color: white; }
.comment:nth-child(even) { color: black; }
由于您似乎想要使用与其所属事件相同的颜色启动注释,您需要执行以下操作:
.event:nth-child(odd) { color: white; }
.event:nth-child(odd) .comment:nth-child(odd) { color: white; }
.event:nth-child(odd) .comment:nth-child(even) { color: black; }
.event:nth-child(even) { color: black; }
.event:nth-child(even) .comment:nth-child(odd) { color: black; }
.event:nth-child(even) .comment:nth-child(even) { color: white; }
以上使用div
个元素。但是如果你真的想用表格做这个,你可以尝试使用下面的HTML,然后使用与上面相同的逻辑:
<table>
<thead><tr><td>Event</td></tr></thead>
<tbody>
<tr><td>Comment</td></tr>
</tbody>
<thead <tr><td>Event</td></tr></thead>
<tbody>
<tr><td>Comment</td></tr>
<tr><td>Comment</td></tr>
<tr><td>Comment</td></tr>
</tbody>
<thead><tr><td>Event</td></tr></thead>
</table>
然后写:
thead:nth-of-type(odd) { color: white; }
tbody:nth-of-type(even) tr:nth-child(odd) { color: white; }
tbody:nth-of-type(odd) tr:nth-child(event) { color: black; }
thead:nth-of-type(even) { color: black; }
tbody:nth-of-type(even) tr:nth-child(odd) { color: black; }
tbody:nth-of-type(odd) tr:nth-child(event) { color: white; }
答案 2 :(得分:-1)
使用纯CSS是不可能的,你必须使用jQuery来添加一个类(或者如果你愿意,可以直接添加样式)。
jQuery的索引开始为0,所以它甚至考虑,我们认为是奇数。
我已添加绿色,以便您可以查看单元格中的内容。
$('table').each(function() {
$('tr.comment:even').addClass('odd');
$('tr.event:even').addClass('odd');
});
&#13;
tr.comment.odd {
background-color: #000;
}
tr.event.odd {
background-color: #000;
}
table {
color: green;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr class="event">
<td>event</td>
</tr>
<tr class="comment">
<td>comment</td>
</tr>
<tr class="event">
<td>event</td>
</tr>
<tr class="comment">
<td>comment</td>
</tr>
<tr class="comment">
<td>comment</td>
</tr>
<tr class="comment">
<td>comment</td>
</tr>
<tr class="event">
<td>event</td>
</tr>
</table>
&#13;