【CSS】リンク画像にマウスオーバーしたときCSSスプライトの背景画像ではなくimg画像でロールオーバーさせる
リンク画像にマウスオーバーした時に別の画像を表示させたい時いつもなら”背景画像にリンクを設定して…というパターンがほとんどなんですが、jQueryを使わずCSSのみで『背景画像ではなくimg画像そのものにマウスオーバーさせて別の画像をロールオーバー表示させる』という工夫を見つけたのでご紹介します。
手順
仮に用意したJPEG画像(100×50px)を<p></p>で挟みます。
そして適当なクラス名を振っておきます。
ここでは仮に 「class="change"」としておきました。
0 1 2 |
<p class="change"><a href="#"><img src="(最初に表示しておく画像パス)" /></a></p> |
PNG 画像ではうまくいかないようなので使用の際は JPEG画像で。
次にCSSですが、考え方としては『画像にマウスオーバーした際、元の画像が不可視になってa要素の背景画像が姿を現す』というもの。
ただしマウスオーバーして現れる画像はa要素の背景に指定するのではなくpクラスそのものに指定します。
原理がちょっと難しいですが次のような感じになります。
0 1 2 3 4 5 6 7 8 |
.change { background-image: url(マウスオーバーの際に表に出てくる画像パス); background-repeat: no-repeat; background-position: left top; height: 50px; width: 100px; } |
a要素には”display: block;”を指定します。
ただこれだけだとIE6でうまく表示されないのでここでも幅と高さを指定します。
0 1 2 3 4 5 6 |
.change a { display: block; height: 50px; width: 100px; } |
雑誌の記事などではIE6用に「a:hoverの背景色に#FFFを指定すべし」と書いてあったりしますが、"#FFF"ではなぜかうまくいきませんでした。
そこはどうやら”transparent”(透明)にするのがいいみたいですね。
0 1 2 3 4 |
.change a:hover { background-color: transparent; } |
最後は『画像にマウスオーバーした際、元のimgは非表示にします』という命令文です。
0 1 2 3 4 |
.change a:hover img { visibility: hidden; } |
これで(IE6を含めて)リンク付き画像にマウスオーバーしたとき別の画像が表示されるようになります。
以上です。
参考サイト
記事はお役にたてましたか?
記事に興味をもっていただけたらソーシャルボタンでの共有お願いします^^
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓