クラス/ホバーがどのように機能するかを誤解しているかもしれません。あなたが書くとき:
.someClass:hover {color: red}
「クラス'someClass'の要素にカーソルを合わせると、その色を赤にします」とブラウザに指示します。「クラス'someClass'のすべての要素を赤にする」という意味ではありません。
私があなたを正しく理解しているなら、あなたはある要素にカーソルを合わせて別の要素のスタイルを変更したいと思うでしょう。これを行うには2つの方法があります-1)画像とテキストの両方を単一の包含要素内に配置してから:hoverスタイルを適用するか、2)JavaScriptを使用して2つの間の接続を確立し、必要に応じてスタイルを調整します。
#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;
}
あなたがやりたいことのために、それはうまくいかないかもしれません:1つの要素の中に画像とテキストの両方を含めるには制限が強すぎるかもしれません。その場合は、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を記述して、さまざまな画像で機能するようにするのは簡単です。その例もご覧になりたい場合はお知らせください。