jQueryでギャラリーページを作る。

fadeIn、fadeOut等の練習がてらjQuery本体だけで簡単なギャラリーページを作ってみました。

小さな画像をクリックすると表示されている画像がfadeOutし、新しい画像が読み込まれるまでLoading画像が表示され、新しい画像読み込み終わった時点でfadeInし、あわせてLoading画像が消えていきます。

jQueryでギャラリー(フェードイン・フェードアウト)

ソース

<html>
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<title>jQueryでギャラリー(フェードイン・フェードアウト)</title>
<script type="text/javascript" src="../jquery-1.2.6.min.js"></script>
<script language="JavaScript">
$(function(){
	$("#menu img").click(function(){
		//loadingを削除
		$("#loading").remove();
		//サムネイルの画像URLを取得
		thumbURL = $(this).attr("src");
		//サムネイルの画像URLを大きい画像URLに書き換え
		imgURL = thumbURL.replace("/s_","/b_");
		//大きい画像を読み込み
		var image = new Image();
		image.imgURL;
		//Loading画像を表示
		$("#imgbox").append('<div id="loading" style="position:absolute;top:0;left:0;z-index:100;"><img src="./img/download.gif" /></div>');
		//画像をフェードアウト
		$("#bigimg").fadeOut(
				"slow",
				function() {
					//大きい画像の入れ替え
					$("#bigimg").attr("src", imgURL);
					//画像の読み込みが完了したら…
					$("#bigimg").load(function () {
						//フェードイン
						$("#bigimg").fadeIn(2000);
						//Loading画像をフェードアウト
						$("#loading").animate({opacity:0}, 800, "linear");
					});
				}
		);
	});

});
</script>
<style type="text/css">
body {
	background: #000000;
	color: #ffffff;
}
a {
	color: #dddddd;
}
#wrap {
	width: 800px;
	margin: 30px auto;
}
#menu {
	float: right;
	width: 80px;
}
#menu ul {
	margin: 0;
	padding: 0;
	list-style: none;
}
#imgbox {
	width: 610px;
	height: 610px;
	background: #000;
	position: relative;
}
#bigimg {
	margin: auto;
	margin-right: auto;
	display: block;
}
img {
	padding: 2px;
	border: 2px solid #cccccc;
}
</style>
</head>
<body>
<div id="wrap">
<h1>Image Gallery</h1>
<p>画像はこちらサイトの画像をお借りしました。<a href="http://sozai-free.com/" class="openwin">2000ピクセル以上のフリー写真素材集</a></p>
<div id="menu">
<ul>
<li><img src="./img/s_1.jpg" /></li>
<li><img src="./img/s_2.jpg" /></li>
<li><img src="./img/s_3.jpg" /></li>
<li><img src="./img/s_4.jpg" /></li>
</ul>
</div>
<div id="imgbox"><img src="./img/b_1.jpg" id="bigimg" /></div>
</div>
</body>
</html>

ひとまずサムネイル画像は「s_○.jpg」、大きい画像は「b_○.jpg」で名前をつけてimgディレクトリに一緒にほり込んで、画像のサイズに合わせてCSSを書き換えれば動作します。

今回はとにかく簡単で、最低限そのままでも使えそうな感じで基本形を作ってみましたが、もうちょっとJavascriptやjQueryがわかっていれば、もっと簡単に記述できる気がする…。

まあ記述はよしとして、クロスフェードや別の動きを盛り込んでいきながら作り込んでいこ。

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

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