jQueryだけで画像のロールオーバーを実装する方法
- 2008/04/04 - 23:50
- JavaScript
- jQuery , Rollover
ロールオーバーの為にわざわざプラグインを使うのは、あんまりシンプルじゃないかなと思い、色々探していた頃 テレパス・ラボ : 画像のロールオーバー に出会いました。
この記事を発見したのは1年以上も前ですが、この方法を紹介している記事をあまり見かけないので、改めてコチラでご紹介したいと思います。
※以下で紹介するサンプルコードは、利便性向上の為やや改変されています。元ソースをご所望の方は テレパス・ラボ : 画像のロールオーバー を参照して下さい。
サンプルコード
function initRollOverImages() {
var image_cache = new Object();
$(".rollover a img").not("[@src*='_on.']").each(function(i) {
var imgsrc = this.src;
var dot = this.src.lastIndexOf('.');
var imgsrc_on = this.src.substr(0, dot) + '_on' + this.src.substr(dot, 4);
image_cache[this.src] = new Image();
image_cache[this.src].src = imgsrc_on;
$(this).hover(
function() { this.src = imgsrc_on; },
function() { this.src = imgsrc; }
);
});
}
$(document).ready(initRollOverImages);
使い方
3行目で指定した箇所の画像にマウスポインタを当てると、ファイル名に_onが付いてる画像を表示する。マウスポインタを外すと_onが付いていない画像に戻る。
以下に実装までの簡単な流れを。
- 通常表示する画像 test.jpg とロールオーバーする画像 test_on.jpg を作成
- jQueryの設定を記述しているファイル(又はHTMLのscript内)に上記コードを挿入
- コード3行目の .rollover a img をCSSな記法で好きな場所に変える
こんな感じです。あら簡単。
※尚、今回ご紹介した方法は[inputにフォーカスすると消える文字をjQueryで実装する]と同様、他でjQueryを使用してる際の"おまけ"程度に考えて頂ければと思います。
オリジナルと違う点
3行目に .not("[@src*='_on.']") を追加することで、src属性で指定した画像に_onが付いている場合はロールオーバーの処理を実行しないようにしています。これにより、アクティブページなどで初めから_on付きの画像を指定したい時も、IDやCLASSを指定する必要が無くなります。
- Prev : MT4.1以降のリファレンス(個人的)決定版
- Next : 包容要素にoverflow:hidden;を使う際の注意点メモ
Trackback(0)
- Trackback URL
- Permanent link
Comment(0)
Post your commnet