快速回答:仅通过 CSS 无法实现您正在寻找的效果,因为 CSS 无法向上移动父级,而只能向下移动 DOM 树来影响元素。
但是,您可以依靠 JavaScript 来实现该效果。在我的示例中,我选择依赖 jQuery。您可以使用各种方法来获取所有其他<div>
s 与 class test
,但这取决于它们的嵌套方式 - 它们是否嵌套在作为兄弟姐妹的父级下,以及嵌套级别等。
这是您描述的场景的示例标记:
<div>
Parent 1
<div class="test"></div>
</div>
<div>
Parent 2
<div class="test"></div>
</div>
<div>
Parent 3
<div class="test"></div>
</div>
CSS 会很简单。类.hover
(不是:hover
状态)由 jQuery 动态添加(见下文):
.test:hover, .test.hover {
background-color: red;
}
JS 会是这样的:
$(function() {
$(".test").hover(function() {
// Find '.test' in all siblings of a specific '.test' parent
$(this).parent().siblings().find(".test").addClass("hover");
}, function() {
// You can refine the criteria of which '.test' should be selected.
$(document).find(".test").removeClass("hover");
});
});
http://jsfiddle.net/teddyrised/fHwFf/