jQueryでフォームの画像ボタンをロールオーバーする

フォームのボタンはCSSである程度デザインをかえれるけど、いまいちなので「type=image」をよく使うけど、デフォルトのボタンのようなクリック感がなくなっていまいます。

ということで、クリック感をだすついでにロールオーバーでも画像を入れ替えるものを作ってみました。

jQuery – フォームの画像ボタンをロールオーバーする

JavaScript

<script language="JavaScript">
//画像をプリロード
function preload(Dir, imgs){
	var d = document;
	for(var i = 0; i< imgs.length; i++){
		var imgObj = new Image();
		imgObj.src = Dir+imgs&#91;i&#93;;
			alert(imgObj.src);
	}
}
window.onload = function(){ preload("./", &#91;"d_down.gif","d_over.gif"&#93;) }

$(function (){
	//マウスが乗ったら…
	$('form :image').mouseover(function() {
		//up画像
		var upimgSrc = $(this).attr("src");
		//over画像
		var overimgSrc = upimgSrc.replace("up", "over");
		//down画像
		var downimgSrc = upimgSrc.replace("up", "down");
		//over画像に入れ替え
		$(this).attr("src", overimgSrc);
		//念のためアップ画像をバックグラウンドに設定
		$(this).css("background-image", "url("+upimgSrc+")");
		//マウスが押されたら…
		$(this).mousedown(function() {
			//down画像に入れ替え
			$(this).attr("src", downimgSrc);
			//マウスアップしたら…
			$(this).mouseup(function() {
				//up画像に入れ替え
				$(this).attr("src", upimgSrc);
			});
		});
		//マウスが外れたら…
		$(this).mouseout(function() {
			$(this).attr("src", upimgSrc);
		});
	});
});
</script>

ボタンに使う画像は「○○○_up.gif」「○○○_over.gif」「○○○_down.gif」と「○○○」部分を同じにしておきます。HTML側では「type=image」で「○○○_up.gif」を指定します。

<input type="image" alt="ボタン" width="206" height="106" src="./d_up.gif" />

ポイントはボタンに使う画像をプリロードしておくこと。プリロードしておくことでアクションが起こってから読み込むタイムラグをなくします。

あとはクリックしたときの点線を消したいけど、IEでは無理みたいなので仕方がない。一応サンプルではCSSで「outline: none;」を指定しているのでFirefoxでは点線はでません。

まあ点線が出た方がクリックした安心感はでるので、ここはよしとしておきましょう。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

アマゾンのサーバでエラーが起こっているかもしれません。一度ページを再読み込みしてみてください。

jQuery – これは使える!「seekAttention.jquery.js」

ホームページ上でキャンペーンを打つ時、リンクボタンを出来る限りまわりの情報より目立つように作成したりしますが、ひとまず狙うところは「目に留まるようにする」こと。

「もともと色がシックな感じで目立つ色は使いたくないけど…」と思っても、ひとまず見てもらうことが目的なのでなんとかせせっと色合わせをしながら、おかしくない色を調整したり、サイズを調整したりとなかなか苦労します。

そんな悩みが解決するjQueryプラグンを見つけました!その名も「seekAttention.jquery.js」!
まずはサンプルをご覧あれ!

seekAttention.jquery.js サンプル

キャンペーン情報、見ましたよね?まわりを隠せばそこが目立ちます。無理くり手を変え、品を変え画像を目立たせたりしなくても、絶対といってもいいくらい目線を誘導できます。

導入も簡単で「jQuery」と「seekAttention.jquery.js」を読み込み下記のように記述します。

$(function(){
	$('.campain').seekAttention();
});

上記記述で「class=campain」を指定している場所が白抜きになるようになります。これだけです。

めちゃくちゃ簡単に導入できるし、これはめちゃいい!変にごちゃごちゃさせるよりもスマートな方法です。

人によっては好き嫌いはあるかもしれませんが、目的はあくまでも「目に留まるようにする」ことです。もしキャンペーン等打っておられる方は、一度導入してみて導入前のページ誘導率等くらべてみてみるのもいいかもしれません。

残念ながら今のところIE6, IE7では多少不具合があるようです(サンプルでもボックスの上下がずれています)が、要チェックのプラグインです。

作者のページでは他にもDemoがいろいろあるので、興味のある方は下記ページをご覧あれ。

Seek Attention – jQuery plugin – by James Padolsey

jQueryで別窓を開くリンクを自動で追加する。

XHTMLでは「target=_blank」は非推奨、いわゆる「別窓を開く」ことはユーザさんにまかせるのがいいので使っちゃいけない、ということになっています。

とはいえなければないで不便に感じることもある。ということで「target=_blank」の代わりに通常のリンクに別窓を開くリンクをくっつけるものをjQueryで作ってみました。

jQuery – 別窓を開く

$(function(){
if(!$.browser.safari) {
	$("a.openwindow").each(function () {
		owUrl = $(this).attr("href");
		owTxt = $(this).text();
		owLink = '&nbsp;<a href="'+owUrl+'" class="owimg" title="'+owTxt+'を別窓で開く"><img src="openwin.gif" alt="別窓で開く" /></a>&nbsp';
		$(this).after(owLink);
	});
	$("a.owimg").click(function(){
		window.open(this.href, '');
		return false;
	});
}
});

仕様はいたって簡単で、「openwindow」というクラス名がついたアンカータグのあとに、別窓を開くリンクを別途クラス名「owimg」を割り当て追加し、そのクラス名がついているアンカーがクリックされたら「window.open」で窓を開くといもの。「」をクリックするとjavascriptの「window.open」でページが開きます。

ちなみに「Safari」は処理を除外しています。「window.open」の「return false」がなぜか効かない。親のwindowもリンク先に飛んでしまいます…。なぜ…。いろいろ調べているとSafariではバコバコ落ちまくるサイトが多数(開いた瞬間に落ちるところも)あり、Safariのせいなのか、jQueryのせいなのか、その他の原因なのかが特定できずじまい…。ちょっと時間かかりすぎたので今日は断念。また調査してみなければ。