我想你可能会误解类/悬停的东西应该如何工作。当你写:
.someClass:hover {color: red}
您是在告诉浏览器“当任何具有类 'someClass' 的元素悬停时,使其颜色变为红色”。这并不意味着“使每个带有类 'someClass' 的元素都变成红色”。
如果我理解正确,您希望悬停一个元素来更改单独元素的样式。有两种方法可以做到这一点 - 1)将图像和文本都放在一个包含元素中,然后将 :hover 样式应用于它们,或者 2)使用一些 javascript 在两者之间建立连接并根据需要调整样式。
对于#1:
HTML:
<div class="nationalTrust">
<img src="/images/ss.gif"/>
<p class="caption">Blah blah</p>
</div>
CSS:
.nationalTrust:hover img {
opacity: 1;
background-color: red;
}
/* Just to show that you can have different styles for the text and image*/
.nationalTrust:hover .caption {
opacity: 0.85;
}
对于您想要做的事情,这可能不起作用:在一个元素中包含图像和文本可能过于严格。在这种情况下,一些javascript是要走的路。这个例子使用 jQuery 来简化事情:
HTML:
<img class="nationaltrust" src="/images/ss.gif"/>
<p class="nationaltrust-caption">Blah-blah</p>
Javascript:
$(function(){
$('img.nationaltrust').hover(
function(){
$('p.nationaltrust-caption').addClass('active'); //When the image is hovered, add the 'active' class to the caption
},
function(){
$('p.nationaltrust-caption').removeClass('active'); //Remove the class when un-hovered.
}
)
});
现在,那个 javascript 非常快速和肮脏,但它应该做你想做的事。问题是您需要为页面上的每个图像/标题编写单独的代码(假设它们都有不同的类)。编写 HTML 和 JS 很容易,因此它们可以处理任意数量的不同图像 - 如果您也想查看该示例,请告诉我们。