Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。
サムネールからオリジナル画像を参照する方法は幾つかあって、今のところ流行ってるのがLightbox。ただ、Lightboxは確かにクールなんだけど、演出過多ってことで飽きて嫌になる人もいる。とゆ~声が職場であったので、作ってみたのがコレ。
今回はオブジェクト指向をちょこっと取り込んでみました。ほんとにちょこっとだけですけどね。ソースの参照と解説は、以下から。
HTML
<p class="thumbOri"><a href="./M1.jpg"><img src="./S1.jpg" alt="画像1"></a><a href="./M2.jpg"><img src="./S2.jpg" alt="画像2"></a><a href="./M3.jpg"><img src="./S3.jpg" alt="画像3"></a></p>
Script
window.onload = getSrc;function getSrc() {if (!document.getElementsByTagName){ return; }x = document.getElementsByTagName('a');for(i=0;i<x.length;i++){if (x[i].parentNode.getAttribute('className') == 'thumbOri' || x[i].parentNode.getAttribute('class') == 'thumbOri'){preLoadImg(x[i].href);x[i].onclick = function() { return thumbOri(this, this.href) };x[i].onkeypress = function() { return thumbOri(this, this.href) };}}}
Sig.の中では既に定番となっている、onloadイベント組み込み部分。ページ中の<a>タグを探し、親ノードの属性に「class=“thumbOri”」があれば、preLoadImg関数を起動。そしてthumbOri関数をonclickイベントに設定しています。
function thumbOri(self,imgSrc) {var already = document.getElementById("originalImg");var sameImg;if(already){imgContainer.removeChild(already);sameImg = already.src;if(sameImg == imgSrc) return false;}insertImg = new Image();insertImg.src = imgSrc;insertImg.id = 'originalImg';insertImg.onclick = function () { imgContainer.removeChild(this); }insertImg.style.display = 'block';insertImg.style.cursor = 'pointer';insertImg.style.padding = '5px 0 0 0 ';insertImg.style.cursor = 'pointer ';imgContainer = self.parentNode;imgContainer.appendChild(insertImg);return false;}
Thumbnail to Origineスクリプト。略してサムオリ(ぁ
ここで書いていることは、3つ。サムネール・クリックでオリジナル画像を展開する。同じサムネールを再びクリックすると、オリジナル画像が消える。オリジナル画像をクリックしても、消える。
function preLoadImg(href) {img = new Image();img.src = href;return img;}
事前に画像を読み込んでおく、プリロードイメージ部分。これに関しては、特に言うことはないかな。



Note: スパム対策が面倒なので、コメント投稿を廃止しました。以前のコメントは残します。
ご意見・ご要望はtwitter@sigwygかはてブコメントにて。