• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:メニューボタン(リンク入り)に画像を使っていますが、マウスポインタを乗)

メニューボタン色変更方法についての質問

このQ&Aのポイント
  • マウスポインタを乗せた時にメニューボタンの色を変化させる方法について質問です。
  • CSSとHTMLを使ってメニューボタンの色変更を試みていますがうまくいきません。
  • どのように修正すればよいか分からないので、アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

原理を理解すれば、何をしていすればよいかおのずと解ると思います。 これは、背景画像でボタン画像の代用するの小技と、 マウスホバー時に画像の透明度を変える小技の組み合わせです。 まず、 a{ display:block; width:50px; height:50px; background:url(img_02.png) no-repeat 0px 0px; } の部分で<a></a>を50px×50pxのボックス表示にして、背景画像 としてimg_02.pngを1枚表示させます。しかし<a></a>内には <img src="img_01.png">があるので、背景画像は見えない状態です。 次に a:hover img{ filter: alpha(opacity=0); -ms-filter: alpha(opacity=0); opacity: 0.0; } は、<a></a>がマウスホバーされた時、その子供の<img>の 透過度(opacity)を透明(0)にしています。 同じようなのを3つも指定しているのは、ブラウザーやそのバージョン によって、opacity属性指定の実装方法が異なるからです。 <IE9 からは opacity:0.0 だけでよいかも(未確認)>

arbert
質問者

お礼

ご回答いただきありがとうございます。 画像が2枚重なった状態で、ホバー時に上の画像が透過するという仕組みですね。 なるほど、わかりました。

その他の回答 (2)

  • naokita
  • ベストアンサー率57% (1008/1745)
回答No.3

CSSのみで色々な方法がありますが、一長一短で100%完璧な方法は存在しない。 filterだけでって事ではないようなので、以下、考え方(ヒントだけ)ですが、 (1) img_01.pngの画像を透明GIFに変更して、背景画像を切り替える。 a{ background:~~;} a:hover{ background:~~;} (2) <a href="#">テキスト</a>として text-indent:-9999; でテキストを表示させずに(1)の要領で背景画像を表示させる。 (3) <a href="#"><img src="img_01.png"></a>の img_01.pngとimg_02.pngを1枚の画像にして、 positionで画像の座標を変化。 (4) img_01.pngとimg_02.pngを1枚の画像にして、 a:hover img{ margin-top: -○○px;} 負のマージンを使う方法。 (5)その他・・・ 枠線は、画像自体に線を描くか a:hover img{border:~~;}とか。 display:block; width:50px; height:50px; の件は、 ケースバイケースで必要。

arbert
質問者

お礼

ご回答いただきありがとうございます。 (1)と(5)が使えそうですね。 (5)だと、枠線が表示されるのはいいのですが、枠線の分だけ幅が広がるので、他のセルも影響を受けて揺れてしまいます。 これを解消する方法があれば教えていただけませんか?

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

「その他に良い方法」 javascript使用OKとするなら、CSSで小技使う必要は無いです。 <img>のmouseoverイベントとmouseoutイベントで画像のURLを変えてしまうだけです。 <a href="#"><img src="img_01.png" onmouseover="this.src='img_02.png'" onmouseout="this.src='img_01.png'" alt="リンク画像"></a>

arbert
質問者

お礼

ご回答ありがとうございます。 とりあえずはCSSでやってみようと思います。

関連するQ&A

専門家に質問してみよう