【发布时间】:2013-06-25 21:35:06
【问题描述】:
我知道这似乎微不足道,但我很难理解这一点。
<div id="divA" style="width: 400px; height: 400px; background-color: #FF0000;">
<div id="divB" style="float: left; width: 200px; height: 200px; background-color: #FFFF00;">
<div id="divC" style="float: left; width: 100px; height: 100px; background-color: #FF00FF;">
</div>
</div>
</div>
我需要一个适用于所有 div 的规则,例如 div:hover { background-color: #000000 !important; },这只影响事件的第一个父 div(当我悬停 divC 时,我希望 divC 的背景颜色变为黑色,但不是 divB 或 divA 的背景颜色)......就像检查员在 Google Chrome 中所做的那样.
有什么想法吗?
【问题讨论】:
-
我认为这在 CSS 中是不可能的。对于 jquery 解决方案,请参阅 [stackoverflow.com/q/10364511/1926369]
-
这在 CSS 中绝对不可能还。如果你悬停一个孩子,你也自动地悬停其父级的定义。 CSS 工作组实际上正在制定目标规范,允许您在选择器链中指定父元素,但这还没有被任何浏览器实现(也没有很快计划)。
-
Some reading on the subject。我正在尝试查找当前正在运行的 W3 提案(与此处显示的语法大不相同)。
-
Here it is。建议用于 CSS4,目前语法共识似乎是
parent! child,意思是“如果父元素中有子元素,则将此规则应用于父元素,因为它后面跟着!字符”。这意味着!默认为选择器的最后一个元素。加入后,您可以使用div! div:hover来解决您的问题,但至少在 2015 年之前不会出现 CSS4。 -
我会继续发送垃圾邮件,因为人们似乎觉得它很有趣:) Current CSS4 working draft over at W3C 实际上将
!切换到主题元素的前面,就像!div div:hover。我认为这样可以避免混淆结构选择器链。
标签: javascript css hover mouseover