【发布时间】:2017-06-27 16:40:31
【问题描述】:
我有一个应用了两个 CSS 亮度过滤器的表格:
#MyTable tr:nth-child(even)
{
filter: brightness(85%);
}
#MyTable td:nth-child(even)
{
filter: brightness(85%);
}
当单个单元格的背景颜色可能不同时,清楚地描绘行和列。
但是黑色网格线(边框)的行为非常奇怪。
在 Firefox (51) 中:
所有过滤单元格的右侧和底部网格线都替换为背景颜色。白色单元格保持其网格线。无论过滤器应用于行、列还是两者,行为都是相同的。
在 Chrome (56) 中:
如果我只应用第一个过滤器,它会交替行亮度,那么偶数行中彩色单元格的顶部网格线和左侧网格线将变为与背景相同的颜色。白色单元格保持其网格线。
如果我只应用第二个过滤器,它交替列亮度,一切正常。
如果我同时应用这两个过滤器,偶数行但奇数列中彩色单元格的顶部和左侧网格线将变为与背景相同的颜色。同样,白色单元格、偶数列中的单元格(即有过滤器)或奇数行中的单元格(即没有过滤器)保持黑色网格线。
如果我使用类而不是 tr:nth-child(even) 选择偶数行,也会发生这种情况。
这是什么原因造成的,我该如何解决?
编辑 - 最小的工作示例:
<html>
<head>
<style>
#MyTable {
border-spacing: 0;
border-collapse: collapse;
}
#MyTable td {
margin: 0;
padding: 20px;
border: 1px solid black;
}
#MyTable tr:nth-child(even)
{
filter: brightness(85%);
}
#MyTable td:nth-child(even)
{
filter: brightness(85%);
}
</style>
</head>
<body>
<table id="MyTable">
<tr>
<td style="background-color: red;">A</td>
<td style="background-color: red;">B</td>
<td style="background-color: red;">C</td>
<td style="background-color: red;">D</td>
<td style="background-color: red;">E</td>
<td style="background-color: red;">F</td>
</tr>
<tr>
<td style="background-color: red;">A</td>
<td style="background-color: red;">B</td>
<td style="background-color: red;">C</td>
<td style="background-color: red;">D</td>
<td>E</td>
<td style="background-color: red;">F</td>
</tr>
<tr>
<td style="background-color: red;">A</td>
<td style="background-color: red;">B</td>
<td style="background-color: red;">C</td>
<td style="background-color: red;">D</td>
<td style="background-color: red;">E</td>
<td style="background-color: red;">F</td>
</tr>
</table>
</body>
</html>
【问题讨论】:
标签: css