我一直在尝试开发一些组件,除非它们的父div处于悬停状态,否则它们会隐藏起来。我试图保持我的CSS与HTML结构无关,所以我将规则结构化如下:
.show-on-hover
{
display:none;
}
*:hover > .show-on-hover
{
display:block;
}
我知道浏览器有时会对通用选择器产生冲突,这里也是如此。当代码位于iFrame(例如JSBin)中时,代码可以正常运行,或者如果我将
*:hover
更改为p:hover
。然而,在普通环境下,Chrome拒绝承认该规则。您可以在此处查看我的代码,但需要将其从JSBin中取出并放入文件中,以便真正了解情况。
http://jsbin.com/tukeqeco/2/edit
这可能听起来像一个愚蠢的问题,也许我只是没有看到某些东西,但这是规范的一部分吗?如果是的话,在哪里,为什么没有更好地记录?为什么它在iframe中有效,但在浏览器的常规部分中无效?编辑:
我已经将我的代码更改为以下内容:
:not(fakeTag):hover > .show-on-hover
{
display:block;
}
它完美地实现了我想要的
*:hover > .show-on-hover
。如果在规范中有关于 *
选择器或 >
选择器的限制,那么既然我能像这样做绕开它们,为什么还会存在这些限制呢?