2016-05-01 10 views
0

初めての投稿ですので、ベストショットを付けてください。CSS&JavaScriptに基づくギャラリーモーダルで外部の.jpgイメージを使用しますか?

私の目標は、自分のウェブサイト上の画像ギャラリーを変更することです。現在、画像がクリックされると、新しいタブで画像が開きます。代わりにギャラリーの同じページに画像を開いておきたい。これを行うために、私はw3schools.comでチュートリアルを参照しました。私は自分のサイトでそれを実装していますが、それはうまくいきます(私のPC上で、まだネット上には生きていません)。私の問題は、サムネイル画像からオーバーレイ/モーダルの画像を引っ張ることです。私のサムネイル画像は低品質なので、外部ファイルから.jpgを引き出すようにしたいと思います。これを行うコードを変更する方法はありますか?ここでは解決策を探してコードを変更してみました...解決策はありません。コードの一部は、w3schools.comのものです。

<div id="myModal" class="modal"> 
    <span class="close">×</span> 
    <img class="modal-content" id="img01"> 
    <div id="caption"></div> 
</div> 

<script> 
var modal = document.getElementById('myModal'); 

var span = document.getElementsByClassName("close")[0]; 

span.onclick = function() { 
    modal.style.display = "none"; 
} 

var images = document.getElementsByTagName('img'); 
var modalImg = document.getElementById("img01"); 
var captionText = document.getElementById("caption"); 
var i; 
for (i = 0; i < images.length; i++) { 
    images[i].onclick = function(){ 
     modal.style.display = "block"; 
     modalImg.src = this.src; 
     modalImg.alt = this.alt; 
     captionText.innerHTML = this.nextElementSibling.innerHTML; 
    } 
} 
</script> 

コードにわずかな変更が必要な場合は、それが最適です。私が望むことをするために完全な見直しが必要な場合は、それは問題ありません。私は自分のPCのサイトで変更した内容を取り除き、まったく新しいソリューションを探します。変更しようとしているネット上のギャラリーはmygalleryです。

サムネイル:img01.jpg
大型バージョン:large-img01.jpg

あなたが好きな何かを行うことができるはず、あなたのサムネイルと大きな画像が同じフォルダに存在し、のようないくつかの賢明な命名規則を共有すると仮定すると

+0

すべての画像の名前付け方法によって異なります。たとえば、サムネイルの名前が 'img01.jpg'のように指定され、大きな画像の名前が' large-img01.jpg'のように指定されている場合は、 'modalImg.src = this.src;'を 'modalImg.src = '大+ '+ this.src; 'あなたのファイルが完全に無関係な名前を持っているならば、それはもっと難しくなります。詳細をお知らせください。 – Turnip

+0

外部の.jpg私が使用したい/参考にしたいのは、さまざまなランダムな名前を使用することです:coloredpencil-heads.jpg。私は彼らの名前を変更することができます。私は正直に言うと、私はJavascriptの背景がないので、これは私にとっては少し新しいものです。私の以前のすべてのコーディングは、CSSとHTMLだけです。 modalImg.src = this.srcです。 to modalImg.src = 'large-' + this.src; CSSを変更する必要がありますか? –

+0

いいえ、それはあなたのJavaScriptの行です。 'images [i] .onclick'関数の2行目です。サムネイルに似た名前を持つように画像の名前を変更すると、間違いなく最も簡単なオプションになります。 – Turnip

答えて

0

これは:

<div id="myModal" class="modal"> 
    <span class="close">x</span> 
    <img class="modal-content" id="img01"> 
    <div id="caption"></div> 
</div> 

<script> 
var modal = document.getElementById('myModal'); 

var span = document.getElementsByClassName("close")[0]; 

span.onclick = function() { 
    modal.style.display = "none"; 
} 

var images = document.getElementsByTagName('img'); 
var modalImg = document.getElementById("img01"); 
var captionText = document.getElementById("caption"); 
var i; 
for (i = 0; i < images.length; i++) { 
    images[i].onclick = function(){ 
     modal.style.display = "block"; 

     /* Get the src of the clicked image. */ 
     var src = this.src; 

     /* Get the filename and extension of the image */ 
     var filename = src.substring(src.lastIndexOf('/')+1); 

     /* Get the file path minus the filename */ 
     var filepath = src.substring(0, src.lastIndexOf('/')+1); 

     /* reconstruct your file path appending "large-" to the filename */ 
     modalImg.src = filepath + 'large-' + filename; 
     modalImg.alt = this.alt; 
     captionText.innerHTML = this.nextElementSibling.innerHTML; 
    } 
} 

これは明らかに、独自の命名規則に合わせて変更する必要があります。

+0

これはうまくいきました。どうもありがとうございました。 –

関連する問題