我可以选择一个不会紧接着的元素,例如:不是(.foo + .bar)?

时间:2016-08-08 16:19:33

标签: css css-selectors

有没有办法让:not(.foo + .bar)选择器?或者我是否必须使用单独的选择器来取消.foo + .bar

的效果

1 个答案:

答案 0 :(得分:0)

值得注意的是:not(.foo + .bar)Selectors 4implementations are on their way中有效。话虽如此,由于相邻兄弟组合子+(以及类似儿童组合子>)的性质,有一个等价的选择器3,尽管你需要一个最多三个复杂选择器的列表:

:first-child, :not(.foo) + *, .foo + :not(.bar)

但这是一种直接转换,可以解释不是.bar的元素。更有可能的是,您只想匹配.bar之前没有直接.foo的任何.bar:first-child, :not(.foo) + .bar 。在这种情况下,它变得更简单:

.foo

您可以根据需要进一步挑选和选择:

  • 如果前面没有.bar表示.bar:first-child成为第一个孩子,则可以使用.bar
  • 如果:not(.foo) + .bar保证有前一个兄弟,您可以使用.foo

如果您需要考虑这两种可能性,那么如上所示列出两者都可以。

请注意,.bar.bar选择器不一定必须不同。您可以将另一个.bar 之前没有p.setInt( 1, cid );的任何String updateSQL = "UPDATE Classmates SET fname=?,lname=?,age=?,gpa=? WHERE sid =?";exact same technique匹配。