最小限の設定から引き続き、このデモでは、 スクロール項目にサムネイル画像の大きなおバージョンを開く、簡単な click アクションを追加しています。
スタンドアロン・デモスクロールの設定は、最小限のセットアップと同じです。 何も変更していません。ここでは、大きな画像表示に必要な要素に、唯一焦点を当てています。 まず、スクロール上の画像へのコンテナを追加します。 HTMLは、次のとおりです。:
<!-- 大きな画像のラッパー要素 --> <div id="image_wrap"> <!-- 最初の画像は、簡単な 1x1 ピクセルの透明 GIF --> <img src="/media/img/blank.gif" width="500" height="375" /> </div>
「ジャンプ」がページになく、すべてが安定するように、画像へ大きさに初期値を 設定するのは良いことです。
ラッパー要素へのスタイル設定は、何も追加していません:
/* 画像ラッパーのスタイル設定 */
#image_wrap {
/* 大きさ */
width:700px;
padding:15px 0;
/* 中央揃え */
text-align:center;
/* 少々の "skinning" */
background-color:#efefef;
border:2px solid #fff;
outline:1px solid #ddd;
-moz-ouline-radius:4px;
}
スクロール項目へ、click ハンドラを追加します。 アイデアとしては、サムネイル画像からより大きなバージョンをロードすることと、 画像のロード中に、ユーザが、何が起きているかが分るように、簡単な透明効果を 適用します。
$(".scrollable").scrollable();
$(".items img").click(function() {
// 同じ thumb がクリックされたかを確認
if ($(this).hasClass("active")) { return; }
// サムネイルの URL(flickrを指定)に基づいて大きな画像のURLを計算する
var url = $(this).attr("src").replace("_t", "");
// 画像をラップする要素へのハンドルを取得して半透明にする
var wrap = $("#image_wrap").fadeTo("medium", 0.5);
// www.flickr.comから大きな画像を取得
var img = new Image();
// ロード後、この関数をコール
img.onload = function() {
// ラッパーを完全に見えるように
wrap.fadeTo("fast", 1);
// 画像を変更する
wrap.find("img").attr("src", url);
};
// www.flickr.comから画像をロード中
img.src = url;
// アクティブ項目
$(".items img").removeClass("active");
$(this).addClass("active");
// ページのロード時、最初の画像に "click" をシミュレートする
}).filter(":first").click();
サムネイル画像は、www.flickr.comサービスから直接取って来ています。 関連する大きな画像は、単に文字列 "_t" を除いた同じイメージのURLを 使用します。恐らく、flickrを使用していないと思いますが、別の種類の 解決策を作るのは非常に簡単です。多分、サムネイルの "alt" 属性に大 きな 画像のURLを指定することで、次のようにそれを取得することができます:
// 上記例の url 割当てをこの行に置換える
var url = $(this).attr("alt");
もっと構文的に正しいページを持ちたい場合、a タグでサムネイル画像を囲み、 href属性には大きな画像のURLを指定し、或いは title 属性に画像の説明を追加 したい場合があります。そのような場合、スクロール項目の ツールチップを追加する、興味深い機会があります。
AJAXにより、全てのサムネイル画像をHTMLページへロードするように、設定を変更するの非常に簡単です。 これは、いくつかの優れたユーザ・インタフェースで可能になります。