サムネールからオリジナル画像を展開するスクリプト

/web/javascript

Note: この記事は、3年以上前に書かれています。Webの進化は速い!情報の正確性は自己責任で判断してください。

写真:朝の駅構内 写真:昼の事務所から 写真:昼の蕎麦屋にて

サムネールからオリジナル画像を参照する方法は幾つかあって、今のところ流行ってるのがLightbox。ただ、Lightboxは確かにクールなんだけど、演出過多ってことで飽きて嫌になる人もいる。とゆ~声が職場であったので、作ってみたのがコレ。

今回はオブジェクト指向をちょこっと取り込んでみました。ほんとにちょこっとだけですけどね。ソースの参照と解説は、以下から。

HTML

  1. <p class="thumbOri">
  2. <a href="./M1.jpg"><img src="./S1.jpg" alt="画像1"></a>
  3. <a href="./M2.jpg"><img src="./S2.jpg" alt="画像2"></a>
  4. <a href="./M3.jpg"><img src="./S3.jpg" alt="画像3"></a>
  5. </p>

Script

  1. window.onload = getSrc;
  2.  
  3. function getSrc() {
  4. if (!document.getElementsByTagName){ return; }
  5. x = document.getElementsByTagName('a');
  6. for(i=0;i<x.length;i++)
  7. {
  8. if (x[i].parentNode.getAttribute('className') == 'thumbOri' || x[i].parentNode.getAttribute('class') == 'thumbOri')
  9. {
  10. preLoadImg(x[i].href);
  11. x[i].onclick = function() { return thumbOri(this, this.href) };
  12. x[i].onkeypress = function() { return thumbOri(this, this.href) };
  13. }
  14. }
  15. }

Sig.の中では既に定番となっている、onloadイベント組み込み部分。ページ中の<a>タグを探し、親ノードの属性に「class=“thumbOri”」があれば、preLoadImg関数を起動。そしてthumbOri関数をonclickイベントに設定しています。

  1. function thumbOri(self,imgSrc) {
  2. var already = document.getElementById("originalImg");
  3. var sameImg;
  4.  
  5. if(already)
  6. {
  7. imgContainer.removeChild(already);
  8. sameImg = already.src;
  9. if(sameImg == imgSrc) return false;
  10. }
  11.  
  12. insertImg = new Image();
  13. insertImg.src = imgSrc;
  14. insertImg.id = 'originalImg';
  15. insertImg.onclick = function () { imgContainer.removeChild(this); }
  16. insertImg.style.display = 'block';
  17. insertImg.style.cursor = 'pointer';
  18. insertImg.style.padding = '5px 0 0 0 ';
  19. insertImg.style.cursor = 'pointer ';
  20.  
  21. imgContainer = self.parentNode;
  22. imgContainer.appendChild(insertImg);
  23. return false;
  24. }

Thumbnail to Origineスクリプト。略してサムオリ(ぁ
ここで書いていることは、3つ。サムネール・クリックでオリジナル画像を展開する。同じサムネールを再びクリックすると、オリジナル画像が消える。オリジナル画像をクリックしても、消える。

  1. function preLoadImg(href) {
  2. img = new Image();
  3. img.src = href;
  4.  
  5. return img;
  6. }

事前に画像を読み込んでおく、プリロードイメージ部分。これに関しては、特に言うことはないかな。

» download

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