悬停时突出显示嵌套块中的背景颜色
如果您尝试激活嵌套div
块的背景颜色,我想您可能正在寻找以下内容。
对于HTMLdiv
,使用不同的类名来标识嵌套块的每一层:
<div class="Group">root
<div class="Group1">1st child
<div class="Group2">2nd child
<div class="Group3">3rd child</div>
</div>
</div>
<div class="Group1">1st child</div>
</div>
和CSS:
.Group, .Group1, .Group2, .Group3 {
background-color:transparent;
}
.Group:hover {
background-color:yellow;
}
.Group1:hover {
background-color:pink;
}
.Group2:hover {
background-color:red;
}
.Group3:hover {
background-color:orange;
}
演示小提琴:http: //jsfiddle.net/audetwebdesign/Scr9G/
当您连续将鼠标悬停在每个嵌套div
上时,背景颜色会依次更改。
如果您试图定位一个嵌套元素,:hover
而没有通过父/祖先块冒泡的效果,您将需要使用 JavaScript/jQuery 来创建您需要的选择规则。
<p>
使用标签的古怪黑客
以下构造展示了 OP 希望看到的行为:
<p class="Group">root
<p class="Group">1st child
<p class="Group2">2nd child
<p class="Group">3rd child</p>
</p>
</p>
<p class="Group">1st child</p>
</p>
CSS和以前一样:
.Group {
background-color:white;
}
.Group2 {
background-color:white;
}
.Group:hover {
background-color:yellow;
}
.Group2:hover {
background-color:red;
}
第二个演示小提琴:http: //jsfiddle.net/audetwebdesign/cf2mn/
在这种情况下,OP 试图嵌套<p>
标签,这实际上不像嵌套其他块元素(如<div>
.
使用标签时,如果后跟其他流程元素(如、等) ,<p>
则结束标签是可选的。</p>
p
div
ul
在这种情况下,上面显示的 HTML 片段等效于:
<p class="Group">root</p>
<p class="Group">1st child</p>
<p class="Group2">2nd child</p>
<p class="Group">3rd child</p>
<p class="Group">1st child</p>
这意味着所有p
选项卡都是兄弟姐妹,并且没有父子关系,这就是 CSS 似乎按 OP 所需工作的原因。
如果div
使用标签而不是p
标签,则生成的 DOM 将展示父子关系,并且 CSS 将显示 OP 不想要的原始行为。
使用p
标签可能会为 CSS 提供所需的效果,但它之所以有效,只是因为 DOM 元素是兄弟元素而不是父子元素。(此外,嵌套p
标签不会生效。)
值得一提的是:
CSS 2.1 没有定义 ':active' 或 ':hover' 元素的父元素是否也处于该状态。
所以在子元素上应用伪元素时最好不要依赖父元素的状态。
参考:
关于:hover
:http ://www.w3.org/TR/CSS2/selector.html#dynamic-pseudo-classes
关于p
标签的可选关闭:http: //www.w3.org/TR/html-markup/p.html#p