为展开的交替行显示不同的背景 table
Display different backgrounds for alternating rows of expanding table
我正在使用 primeNg 行扩展功能。
代码在这里:https://primefaces.org/primeng/showcase/#/table/rowexpansion
我有一个要求,奇数行显示黄色背景,偶数行显示灰色背景,但是在计算过程中不应包括具有子 table 的附加插入行。
考虑下面的 html 示例,其中用户展开了第一行。我不希望 'table-row-expand' class 的行在 even/odd 规则中被考虑。在这里,我希望第一行为黄色,第二行为灰色,第三行再次为黄色。展开的行不应有任何背景。
请注意,仅当用户展开相应行时,.table-row-expand 行才会添加到 DOM。请帮我解决这个问题。
.table-row:nth-child(odd) {
background-color: yellow;
}
.table-row:nth-child(even) {
background-color: grey;
}
<table>
<tr class='header-row'>
<th> </th>
</tr>
<tr class='table-row'>
<td> // first row (should be gray)</td>
</tr>
<tr class='table-row-expand'>
<td> // expanded row (should not be colored)
<div>
<p-table> // child table </p-table>
</div>
</td>
</tr>
<tr class='table-row'>
<td> // second row (should be yellow)</td>
</tr>
<tr class='table-row'>
<td> // third row (should be gray)</td>
</tr>
</table>
让自己不再头疼,来点滴 JavaScript。您可能需要将此代码放入函数中,以便在添加新行时调用。
.table-row.odd {
background-color: yellow;
}
.table-row.even {
background-color: grey;
}
<table>
<tr class='header-row'>
<th> </th>
</tr>
<tr class='table-row'>
<td> // first row (should be gray)</td>
</tr>
<tr class='table-row-expand'>
<td> // expanded row (should not be colored)
<div>
<p-table> // child table </p-table>
</div>
</td>
</tr>
<tr class='table-row'>
<td> // second row (should be yellow)</td>
</tr>
<tr class='table-row'>
<td> // third row (should be gray)</td>
</tr>
</table>
<script>
const styledRows = document.querySelectorAll('.table-row');
const isOdd = n => Boolean(n % 2); // returns true if n / 2 has a remainder
styledRows.forEach((row, i) => {
row.classList.add(isOdd(i) ? 'odd' : 'even');
});
</script>
我正在使用 primeNg 行扩展功能。 代码在这里:https://primefaces.org/primeng/showcase/#/table/rowexpansion
我有一个要求,奇数行显示黄色背景,偶数行显示灰色背景,但是在计算过程中不应包括具有子 table 的附加插入行。
考虑下面的 html 示例,其中用户展开了第一行。我不希望 'table-row-expand' class 的行在 even/odd 规则中被考虑。在这里,我希望第一行为黄色,第二行为灰色,第三行再次为黄色。展开的行不应有任何背景。
请注意,仅当用户展开相应行时,.table-row-expand 行才会添加到 DOM。请帮我解决这个问题。
.table-row:nth-child(odd) {
background-color: yellow;
}
.table-row:nth-child(even) {
background-color: grey;
}
<table>
<tr class='header-row'>
<th> </th>
</tr>
<tr class='table-row'>
<td> // first row (should be gray)</td>
</tr>
<tr class='table-row-expand'>
<td> // expanded row (should not be colored)
<div>
<p-table> // child table </p-table>
</div>
</td>
</tr>
<tr class='table-row'>
<td> // second row (should be yellow)</td>
</tr>
<tr class='table-row'>
<td> // third row (should be gray)</td>
</tr>
</table>
让自己不再头疼,来点滴 JavaScript。您可能需要将此代码放入函数中,以便在添加新行时调用。
.table-row.odd {
background-color: yellow;
}
.table-row.even {
background-color: grey;
}
<table>
<tr class='header-row'>
<th> </th>
</tr>
<tr class='table-row'>
<td> // first row (should be gray)</td>
</tr>
<tr class='table-row-expand'>
<td> // expanded row (should not be colored)
<div>
<p-table> // child table </p-table>
</div>
</td>
</tr>
<tr class='table-row'>
<td> // second row (should be yellow)</td>
</tr>
<tr class='table-row'>
<td> // third row (should be gray)</td>
</tr>
</table>
<script>
const styledRows = document.querySelectorAll('.table-row');
const isOdd = n => Boolean(n % 2); // returns true if n / 2 has a remainder
styledRows.forEach((row, i) => {
row.classList.add(isOdd(i) ? 'odd' : 'even');
});
</script>