CSS: 悬停一个元素,多个元素的效果?

我在想办法解决我的悬停问题。

<div class="section">
<div class="image"><img src="myImage.jpg" /></div>
<div class="layer">Lorem Ipsum</div>
</div>

现在,两个类,图像和图层,都有边框。两者对于法线和悬停都有不同的颜色。 有没有办法做一下,这样如果我悬浮图层类,同时悬浮图层和图像类的边框颜色是活跃的?反之亦然?

247235 次浏览

You'd need to use JavaScript to accomplish this, I think.

jQuery:

$(function(){
$("#innerContainer").hover(
function(){
$("#innerContainer").css('border-color','#FFF');
$("#outerContainer").css('border-color','#FFF');
},
function(){
$("#innerContainer").css('border-color','#000');
$("#outerContainer").css('border-color','#000');
}
);
});

Adjust the values and element id's accordingly :)

This is not difficult to achieve, but you need to use the javascript onmouseover function. Pseudoscript:

<div class="section ">


<div class="image"><img src="myImage.jpg" onmouseover=".layer {border: 1px solid black;} .image {border: 1px solid black;}" /></div>


<div class="layer">Lorem Ipsum</div>


</div>

Use your own colors. You can also reference javascript functions in the mouseover command.

This worked for me in Firefox and Chrome and IE8...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
div.section:hover div.image, div.section:hover div.layer {
border: solid 1px red;
}
</style>
</head>
<body>
<div class="section">
<div class="image"><img src="myImage.jpg" /></div>
<div class="layer">Lorem Ipsum</div>
</div>
</body>
</html>

... you may want to test this with IE6 as well (I'm not sure if it'll work there).

You don't need JavaScript for this.

Some CSS would do it. Here is an example:

<html>
<style type="text/css">
.section { background:#ccc; }
.layer { background:#ddd; }
.section:hover img { border:2px solid #333; }
.section:hover .layer { border:2px solid #F90; }
</style>
</head>
<body>
<div class="section">
<img src="myImage.jpg" />
<div class="layer">Lorem Ipsum</div>
</div>
</body>
</html>

I think the best option for you is to enclose both divs by another div. Then you can make it by CSS in the following way:

<html>
<head>
<style>
div.both:hover .image { border: 1px solid blue }
div.both:hover .layer { border: 1px solid blue }
</style>
</head>


<body>
<div class="section">


<div class="both">
<div class="image"><img src="myImage.jpg" /></div>
<div class="layer">Lorem Ipsum</div>
</div>


</div>
</body>
</html>

OR

.section:hover > div {
background-color: #0CF;
}

NOTE Parent element state can only affect a child's element state so you can use:

.image:hover + .layer {
background-color: #0CF;
}
.image:hover {
background-color: #0CF;
}

but you can not use

.layer:hover + .image {
background-color: #0CF;
}

You can also do it like this. for example you have a link attached to another link and you want to show both at hovering at one you can do it simply by specifying each individual's functions then at once at hovering both.

.videoTitle:hover{
color: #1270cf;
}
.videoTitle:hover .copy{
display: block;
}