2

我想在表格上应用名为“模糊”的过滤器(仅在 css 中悬停),不包括在那一刻悬停的 td。否则从页面加载应用过滤器模糊。那么,如何仅通过使用 CSS 从表的悬停中排除悬停的 td 呢?

table td {
    filter: blur(1px);
}   

td:hover {
    filter:blur(0px)
}
4

1 回答 1

2

为了使表格仅在悬停时模糊,您必须使用选择器table:hover。现在,因为应用于元素的过滤器也应用于其子元素,并且因为您希望其中一个单元格(它是子元素)没有该过滤器,所以您不能将其应用于整个表格。相反,您需要将其应用于悬停表格中的每个单独的单元格,就像您所做的那样,但添加了伪选择器:table:hover td

然后,要从悬停的单元格中删除过滤器,您自然会将过滤器应用于以下选择器:td:hover. 这里的问题是您已经使用前一个选择器 ( table:hover td) 定位了所有表格单元格,并且第一个选择器具有比第二个选择器 (11) 更高的特异性 (12)。为了使第二个选择器获胜,它必须至少具有相同的特异性并放在第一个选择器之后。

要将其特异性增加 1,您只需table在其前面添加一个空格即可。这意味着它以表格中悬停的单元格为目标,这就是您想要的。

您最终得到以下工作代码:

table:hover td { /* Specificity 12 */
  filter: blur(1px);
}

table td:hover { /* Also specificity 12, but placed after, so it wins */
  filter: blur(0px);
}
<table>
  <tr>
    <td>Cell</td>
    <td>Cell</td>
    <td>Cell</td>
  </tr>
</table>

这有帮助吗?

于 2019-05-26T12:33:59.750 回答