表示一个“;“叔叔”;使用css

表示一个“;“叔叔”;使用css,css,css-selectors,Css,Css Selectors,有没有一种方法可以用css选择一个元素的叔叔?具体而言,我正在为具有以下形式条目的页面编写GreaseMonkey脚本: <ruby> <span class="under"> <span class="wk_K">決</span> </span> <rt>き</rt> </ruby> <ruby> <span class="under">決</s

有没有一种方法可以用css选择一个元素的叔叔?具体而言,我正在为具有以下形式条目的页面编写GreaseMonkey脚本:

<ruby>
  <span class="under">
    <span class="wk_K">決</span>
  </span>
  <rt>き</rt>
</ruby>
<ruby>
  <span class="under">決</span>
  <rt>き</rt>
</ruby>

如果
wk
字段嵌套在
中,即如果我想选择“相邻的叔叔”,如何实现相同的效果?

您必须在这里使用
类下的

ruby .under + rt {visibility: hidden;}
ruby .under:hover + rt {visibility: visible;}
因为,
rt
.under
的兄弟,而且在使用
.under:hover
时也没有区别。并将
高度设置为
1em
以不允许
rt:hover
,从而触发
。在:hover

如果不起作用,请告诉我

在您的例子中,您试图使用一个父选择器,这在CSS 3和CSS 4中都不受支持。所以JavaScript或jQuery是您的解决方案。我知道您需要在
下选择
。只有
.wk
在其中

如果感兴趣,您可能需要以下jQuery代码

$(".wk_K").closest(".under").addClass("rt-hover");
在CSS中,如果您可以使用:

ruby .rt-hover + rt {visibility: hidden;}
ruby .rt-hover:hover + rt {visibility: visible;}

这对您很有用。

我认为您需要使用JavaScript或重新格式化代码。find()和closest()方法应该可以帮助您找到需要的地方/但如果有CSS解决方案,我会很高兴的。@sheriffderek如果CSS不起作用,我很可能会用JavaScript删除
标记下的所有
。但是css会更加优雅。。所以你不能。@Oriol我希望类似于
(.under.wk_K)+rt
的东西,即
under
元素的邻居,该元素包含
wk_K
,以避免缺少父选择器。在我的示例中,这将隐藏这两个
rt
元素。但是第二个应该保留,因为它不在
wk
旁边。我将修改这个问题,使之更加明确。@Klimpgeist看一看我更新的答案。谢谢。因此,无法将问题解释为“在包含
wk
节点下选择
的同级节点”?类似于
(.under.wk_K)+rt
?@klimplegeist现在还没有使用纯CSS好友。。。这就是为什么我也给出了一个JavaScript示例。
ruby .rt-hover + rt {visibility: hidden;}
ruby .rt-hover:hover + rt {visibility: visible;}