87

我正在寻找解决悬停问题的方法。

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

现在,图像和图层这两个类都有边界。两者对于正常和悬停都有不同的颜色。有没有办法做到这一点,所以如果我悬停图层类,图层和图像类悬停边框颜色都是活动的?反之亦然?

4

7 回答 7

198

为此,您不需要 JavaScript。

一些 CSS 会做到这一点。这是一个例子:

<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>

于 2009-09-22T20:58:17.590 回答
11

这在 Firefox、Chrome 和 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>

...您可能还想用 IE6 测试它(我不确定它是否可以在那里工作)。

于 2009-09-22T20:38:25.273 回答
9

我认为对你来说最好的选择是用另一个 div 将两个 div 括起来。然后您可以通过以下方式通过 CSS 制作它:

<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>
于 2009-09-22T21:03:46.053 回答
7

这并不难实现,但需要用到javascriptonmouseover函数。伪脚本:

<div class="节">

<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>

使用你自己的颜色。您还可以在 mouseover 命令中引用 javascript 函数。

于 2009-09-22T20:30:32.730 回答
2

我认为您需要使用 JavaScript 来完成此操作。

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');
        }
    );
});

相应地调整值和元素 ID :)

于 2009-09-22T20:26:36.310 回答
0

或者

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

注意父元素状态只能影响子元素状态,因此您可以使用:

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

但你不能使用

.layer:hover + .image {
  background-color: #0CF;
}
于 2013-09-09T11:45:26.707 回答
0

你也可以这样做。例如,您有一个链接附加到另一个链接,并且您希望在悬停时显示两者,您只需指定每个人的功能,然后同时悬停两者即可。

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

于 2021-06-13T14:14:00.950 回答