当一个具有类.parent
的元素悬停在其上时,它会使用类.child
定位子元素并将CSS应用于它们。
纯粹使用CSS可以实现这种效果吗?
HTML:
<div class="parent" style="background:red;margin:20px;padding:20px;">
<div class="child" style="background:blue;margin:20px;padding:20px;"></div>
</div>
<div class="parent" style="background:red;margin:20px;padding:20px;">
<div class="child" style="background:blue;margin:20px;padding:20px;"></div>
</div>
jQuery的:
$('.parent').hover(
function () {
$(this).find('.child').css('background','yellow');
},
function () {
$(this).find('.child').css('background','blue');
}
);
答案 0 :(得分:5)
删除内联样式并将以下内容放在样式表中:
/* CSS */
.parent { background: red; margin: 20px; padding: 20px; }
.child {background blue; margin: 20px; padding: 20px;}
.parent:hover > .child { background: yellow; }
答案 1 :(得分:2)
烨。
.parent .child {
background: blue;
}
.parent:hover .child {
background: yellow;
}
这复制了jQuery的效果。如果你的字面意思是“孩子”(而不是后代,这是你实际发现的),那么你想要以下内容:
.parent > .child {
background: blue;
}
.parent:hover > .child {
background: yellow;
}
作为@hobbs notes,这在IE 6中不起作用,因为:hover
is only supported on links in IE 6。
答案 2 :(得分:2)
是的,但您应该将内联样式移动到类中,这样您就不必使用!important
声明(否则内联样式将始终覆盖样式表)。
<div class="parent">
<div class="child"></div>
</div>
<div class="parent">
<div class="child"></div>
</div>
.parent {
background: red;
margin: 20px;
padding: 20px;
}
.child {
background: blue;
margin: 20px;
padding: 20px;
}
.parent:hover .child {
background: yellow;
}
答案 3 :(得分:1)
.parent .child {
background: blue;
}
.parent:hover .child {
background: yellow;
}
应该做的工作,除了:hover
仅适用于A
元素的IE版本(jQuery解决这个问题; CSS没有。)