• ベストアンサー

サムネイルをクリックすると画像が拡大表示されるようにするには?

下記のページの「SAMPLE」を、サムネイルをクリックすると、選択した画像が真ん中の段の陰付き白枠の中に拡大表示されるようにしたいです。 インラインフレームは使いたくないのでJavaScriptでできないかと思っています。 ちなみに当方はJavaScript初心者です。 白枠はcssで#subcon2というボックスの背景に設定しています。 画像については、サムネイルの画像はs01.jpg、s02.jpg・・・という名前で、拡大表示用の画像はサムネイルの名前からsを取って、01.jpg、02.jpg・・・と、名前を付けて、このhtmlと同じ階層にある「images」フォルダの中の「sample_nail」フォルダに入ってます。 この情報で足りますか? どのようにすればいいでしょうか?よろしくお願い致します。 http://www.ac.auone-net.jp/~mrs/sample.html

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

No1様の回答と方法は同じですが… イメージが増減したりすることを考えると、onclickを各イメージタグに設定するのも面倒そうなのとHTMLが長くなるので、代表してsubcon3にだけ設定しておくという案です。 ついでながら、サムネイルのイメージ群のwidth、heightはCSSで指定してあるので、HTMLには不要だと思います。省いてしまったほうがHTMLがすっきりするのでは? <img src="images/sample-nail/s01.jpg" alt="s01" /> <img src="images/sample-nail/s02.jpg" alt="s02" /> <img src="images/sample-nail/s03.jpg" alt="s03" />  ・・・ みたいに また、ご提示のurlをOpera8.5で見るとレイアウトが乱れていました。(←よけいなお世話ですが…サムネールとフッターが重なる) さて、本題ですが、以下の修正をしてみてください。 ◆HTMLのsubcon3のdivを以下のように修正 <div id="subcon3" onclick="show(event)"> ◆スクリプトを追加(head間にいれるか外部js) <script type="text/javascript"> <!-- var oImg = new Image(); oImg.style.display='none'; window.onload = function(){document.getElementById('subcon2').appendChild(oImg);} function show(e){ var iName = null, el, n; el = e./*@cc_on @if (true) srcElement @else@*/ target /*@end@*/; if (el.src) { iName = el.src.match(/s\d+\.jpg$/); if (iName) { n = iName.toString(); oImg.src = el.src.replace(n,n.substr(1)); }} oImg.style.display = iName?'inline':'none'; } --> </script> なお、拡大表示部分のスタイルは、必要に応じて #subcon2 img{ } で指定することができます。

chibihuku
質問者

お礼

できました! ありがとうございました!

その他の回答 (1)

  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

できればサムネイル画像のファイル名を"01_s.jpg", "02_s.jpg"...のように変更して頂いた方が処理が楽になるのですが・・・。 サムネイル画像のファイル名を上記のように変更した場合、JavaScriptを以下のように記述します。 [JavaScript] function showImage(el) { var imageSrc = el.src.replace(/_s\.jpg$/, ".jpg"); document.getElementById("subcon2").innerHTML = '<img src="' + imageSrc + '">'; } 次にサムネイル画像がクリックされたときに上記のJavaScriptが呼ばれるようにHTMLでサムネイル画像を表示している部分を以下のように変更します。 [HTML] <img src="images/sample-nail/01_s.jpg" width="110" height="55" alt="s01" onClick="showImage(this);"/> <img src="images/sample-nail/02_s.jpg" width="110" height="55" alt="s02" onClick="showImage(this);"/> … これが一番簡単な処理かな?と思います。 何か不明な点や不具合があれば、もう一度質問して下さい。

chibihuku
質問者

お礼

さっそくの回答ありがとうございました! デザインの乱れもご指摘いただき、ありがとうございました。

関連するQ&A

  • highslideで拡大画像・サムネイルが表示されない

    こんにちは、いつもお世話になっています。 こちらで紹介して頂いたhighslide(http://vikjavev.no/highslide/)からサンプルをダウンロードしました。 サンプルの画像フォルダに自分の表示したい画像(拡大画像とサムネイル)をサンプルファイルと同名(full-image.jpg, thumbnail.jpg)で上書きしたのですが、画像が表示されません。 highslideを利用するには、あとどうすればよろしいのでしょうか? どなたかご教授お願いします。

  • サムネイルクリックで別ウィンドウに拡大画像表示

    javascriptにて画像のようなな形を作りたいのですが初心者で困っています。 ページAの画像をクリックすると別ウィンドウで拡大画像とその他のサムネイルが 表示され、そのウィンドウで各画像を切り替えて観覧できるようにしたいです。 元のページでの画像切替はよくありますが、別ページを開いて観覧する場合がわからず困っています。ページAと同じようなページを複数つくり、拡大のページBは共通で使えるようにしたいと思っています。 ページAのhtml部分は <li><a href=><img src="test.jpg" title="拡大時に表示する文"></a></li> <li><a href=><img src="test_a.jpg" title="拡大時に表示する文"></a></li> <li><a href=><img src="test_b.jpg" title="拡大時に表示する文"></a></li> この画像をクリックでページB拡大画像を表示し、画像と一緒にtitleに入れた文章を表示させたいと思っています。 用意する画像は各拡大画像1枚で、サムネイルのところはcssで小さくしています。 このような形は実現可能でしょうか? よろしくお願いします。

  • CSSだけでサムネイルから拡大画像チェンジ

    1ヶ所の指定場所に拡大画像が表示された状態で、下段にいくつかのサムネイルを設置し、マウスをそのサムネイルに乗せると拡大画像がチェンジして、マウスを外すと元画像に戻るみたいな事をCSSだけで表現したいのですが可能でしょうか?感じとしては http://curucuru-select.com/?pid=7429014 のCSS版みたいなものをのぞんでいるのですが・・・多分このサイトはjavascriptでやってるみたいなんですけど・・できたら、サンプルソースをいただけるとありがたいのですが・・どうかよろしくお願いします。

    • 締切済み
    • CSS
  • サムネイル画像の拡大

    サムネイル画像がオンマウス時に拡大するようにしたいと思い、色々調べました。 画像をtableタグ(表!?)の中に表示させようとすると、デザインが崩れるものばかりでした。 ようやく下記のサイトに辿り着き、デザインも崩さずに画像を拡大させることが出来たのですが・・・・・・ 複数の画像を同じように拡大できるようにしようとした所、拡大した画像が他の画像(拡大するように設定しているサムネイル画像)の下に表示されてしまいます。 これをサムネイル画像の下にならないようにするにはどうしたら良いのでしょうか??? また、この方法以外でも、比較的簡単でデザインを崩さない拡大のやり方があれば教えて下さい。 お願いします。 私が試したサイオトは下記のものです↓ http://tonecontrol.mods.jp/memo/css_thumbnail.html

    • ベストアンサー
    • HTML
  • サムネイル画像をクリックすると拡大画像を表示させる方法

    今はまずサーバに同一画像の小さい写真(サムネイル用)と大きい写真の両方をアップロードして、 小さい画像を表示させて、そこにリンクをつけて大きい画像のURLへとばすようにタグを書いているのですが、これでは同じ写真を2枚アップロードしなくてはいけず、面倒です。 1枚の写真だけをアップロードしてサムネイル画像を表示させて、クリックしたら拡大写真がでるようにするためにはどのようなタグを使えばいいのでしょうか?

    • ベストアンサー
    • HTML
  • サムネイル画像の表示途中でそのサムネイル画像をクリックすると後から表示されるサムネイルが表示されない。

    winXP PRO IE6.0SP1です。 とあるHPを作成していますが、サムネイル画像(約100画像)をクリックすると別ウィンドウが出る様にしています。 サムネイルが全部表示される前にクリックすると小窓が出て画像は表示されますが、そこから後に出るサムネイルが表示されずフリーズしてしまいます。 <a href="javascript:void(0);" onclick="window.open('./******/***.jpg','win1','width=400,height=400');" menubar=no toolbar=no locaction=no status=no><img src="./small/***.jpg" height=50 border=0></a> 他のPCで確認しても同じ状態です。 サムネイル画像が出ている途中でその画像をクリックしてもフリーズしない方法の解除方法はありますでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • サムネイル画像をオンマウスで拡大表示してそれぞれの画像にリンクを指定する記述について

    お世話になります。 JavaScript初心者ですが、フリーソースなどを見つつ勉強しております。 下記のようなhtmlに【js00】と【js01】を読み込んでサムネイル画像をオンマウス時に上部に拡大表示させているのですが、サムネイル画像と拡大表示画像の両方に指定リンクをつけようとしています。 記述4の【js02】のような画像をランダム表示して指定リンクをつけるScriptは発見できたのですが、これを記述1+2+3と組み合わせられず、作業が進まなくなってしまいました…。 フリーソースを応用しようとしすぎて、遠回りな記述になっているかもしれませんが、もし分かる方がいらっしゃったら教えて頂けないでしょうか? ■記述1(html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <SCRIPT language="JavaScript" type ="text/javascript" src="http://test.com/00.js"> </SCRIPT> </head> <body> <table width="400"> <a href="#" target="_blank"> <img src="http://test.com/img/01.jpg" name="imgSample"></a> <div> <div> <script language="JavaScript" type ="text/javascript" src="http://test.com/01.js"> </script> </body> </html> ■記述2(js00) //画像の名前を配列に代入していきます。 strPictureName = new Array("http://test.com/img/01.jpg","http://test.com/img/02.jpg","http://test.com/img/03.jpg","http://test.com/img/04.jpg","http://test.com/img/05.jpg","http://test.com/img/06.jpg","http://test.com/img/07.jpg","http://test.com/img/08.jpg"); function SetPicture(nVal) { document.imgSample.src = strPictureName[nVal]; } ■記述3(js01) //サムネイル画像をオンマウスで拡大表示 img_num="8"; if( img_num == "" ){img_num='5';} for ( cnt = 1 ; cnt <= img_num ; cnt++ ) { cnt2 = cnt-1; document.write( "<a href=\"#\" onMouseOver=\"SetPicture("+cnt2+");\" class=\"menu\"><img src=\""http://test.com/0"+cnt+".jpg\" width=\"100\" height=\"86\"></a>" ) ; } ■記述4(js02) // ランダムに画像を表示する jmp = new Array(); img = new Array(); // ジャンプ先のアドレス(数字は画像と対応) jmp[0] = "http://www.yahoo.co.jp/"; jmp[1] = "http://bb.yahoo.co.jp/"; jmp[2] = "http://www.yahoo.co.jp/"; jmp[3] = "http://auctions.yahoo.co.jp/"; jmp[4] = "http://aeu.jp/cs/"; jmp[5] = "http://google.com/"; jmp[6] = "http://google.co.jp/"; jmp[7] = "http://news.yahoo.co.jp/"; // 画像のアドレス(数字はジャンプ先のアドレスと対応) img[0] = "http://test.com/01.jpg"; img[1] = "http://test.com/02.jpg"; img[2] = "http://test.com/03.jpg"; img[3] = "http://test.com/04.jpg"; img[4] = "http://test.com/05.jpg"; img[5] = "http://test.com/06.jpg"; img[6] = "http://test.com/07.jpg"; img[7] = "http://test.com/08.jpg"; n = Math.floor(Math.random()*jmp.length); document.write("<a href='"+jmp[n]+"'>"); document.write("<img src='"+img[n]+"' border='0'>"); document.write("</a>"); ■完成イメージ   | ̄ ̄ ̄ ̄ ̄ ̄ ̄|   |  拡大画像  |   |_______|   | ̄|| ̄|| ̄|| ̄|   |_||_||_||_|←サムネイル ・サムネイル画像をオンマウスで拡大画像を表示 ・サムネイル画像、拡大画像それぞれに指定リンクを入れる ・可能であればリンクページは target="_blank" で開きたい 以上がご質問内容です。 初心者で大変恐縮ですが、どうぞよろしくお願いいたします。

  • サムネイル拡大表示

    サムネイルの画像ですが、見る側のパソコンの環境によって拡大表示されないような事ってあるのでしょうか? ブログに貼り付けた画像を「もっと大きな画像で観たい」との要望がたまにありますもので どんなものかと、何方かご教授をお願い致します。

  • サムネイルをマウスオーバーすると拡大画像を表示したい

    ここに質問していいのか不安ですが・・・ よろしくお願いします。 http://www.photos.jp/browse.phtml?f=s&c=0 このページのように、サムネイル画像にマウスを乗せると 拡大された画像が表示されるようにしたいのですが・・・・ どうすればいいでしょうか? 抽象的な質問の仕方で恐縮ですが・・・

  • サムネイル画像にマウスカーソルが触れると拡大画像になる~その応用について

    JavaScript初心者です。どうぞよろしくお願いします。 サムネイルにオンマウスすると拡大画像が現われるよう「myBigImage」を使い記述し、これは実行できました。 そこで質問なのですが、同じ一つのhtml内で、下記のように二つのプログラムを並列させる事は可能でしょうか。 例) A(myBigImage)、A1(サムネイルの1)、A2(サムネイルの2) B(myBigImage)、B1(サムネイルの1)、B2(サムネイルの2) ※「サムネイルにオンマウスすると拡大画像が現われる」、  それを2グループ表示させたい、という事です。  例えば2つ目のグループ、Bを(myBigImage2)などとして  実行する事はできるのでしょうか。 初心者につきわかりにくい表現になってしまっているとしたら申し訳ありません。 この応用ができるかどうか、また万一可能な場合はどのように記述すればいいのか、教えていただけると大変助かります。 何とぞよろしくお願いします。

専門家に質問してみよう