画像を順にフェードインフェードアウトで表示

このQ&Aのポイント
  • HPのTopページの900×300位のスペースに順に画像をフェードインフェードアウトしながら表示させ、最後の画像で停止させたいです。
  • Flashムービーを作成するのは簡単ですが、iPadに対応しないため、jQueryなどで表示させたいです。JavaScriptのコードがありますが、フェードインフェードアウトにならないため、どの部分に何を追加すれば良いかわかりません。
  • 現在のコードでは、画像を順番に表示する処理は実装されていますが、フェードインフェードアウトになっていません。どの部分を修正すれば良いのか、または別のコードを使用すれば良いのか、アドバイスをいただけませんか?
回答を見る
  • ベストアンサー

画像を順にフェードインフェードアウトで表示

HPのTopページのw900×h300位のスペースに 順に画像をフェードインフェードアウトしながら表示させ,最後の画像でストップさせたい Flashムービーを作成するのは簡単なのですが、iPadに対応しない為 jQueryなどで表示させたいのですが、javaが全然わからず困っています。 一応下記のように自分で調べてみて見つけた、近いものを作っては見たものの <script language="JavaScript"><!-- myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } document.myFormImg.src = myImage[myNowCnt]; // 次の画像を表示する setTimeout( "myChange()" , 6000 ); // 2秒周期に画像を更新する } // --></script> <img src="img/main/f01.jpg" width="900" height="300" name="myFormImg"> <script language="JavaScript"><!-- myChange(); // --></script> こんな感じでやってみたもののこれではフェードインフェードアウトにはなりません どこに何を足せばいいのか、または全く違うコードを書けばいいのかどなたかお教えいただけませんでしょうか。 jQueryだと記述はもっと簡単なのでしょうか?

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

  • ベストアンサー
  • m0a13
  • ベストアンサー率47% (9/19)
回答No.2

<script src="http://code.jquery.com/jquery.js"></script> <script language="JavaScript"><!-- $(function() { myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } setTimeout(function() { $("#myFormImg").fadeOut(2000, function() { $(this).attr("src", myImage[myNowCnt]); $(this).fadeIn(2000, function() { myChange(); }); }); }, 6000); // 6秒周期 } myChange(); }); // --></script> <img id="myFormImg" src="img/main/f01.jpg" width="900" height="300"> 出がかりをスムーズにしました。 setTimeout()は指定時間後に指定の処理を実行する関数なのでフェードの時間とは関係ありません。 jQueryのfadeIn()、fadeOut()は所要時間を都度設定できます。上記では2秒に設定しています。 さて、最後の画像表示時にリンクを設定したいということですが、それは難易度が上がります。 新たにHTMLの<a>タグを追加し、その表示/非表示をjsで制御しなければならないからです。 また画像にリンク文字を重ねるためにも一工夫必要です。個人的には画像そのものをリンクにするとする方が、実装も楽で使い勝手がいいように思います。 どう実装したいかにもよるので、是非ご自分で試してみてください。 ウェブページを作られているのであればjQueryは覚えておいて損はありませんので、勉強がてらやってみてはいかがでしょうか。

youdesign
質問者

お礼

丁寧なご回答ありがとうございました。 1枚目の画像もゆっくり出てきていい感じになりました。 結局周期は6秒では待ちきれなかったので3秒にして フェードインは1秒 フェードアウトは2秒にしました。 アウトの後のインまでの暗くなる一瞬が気にはなるものの多分これだったら満足してもらえるのではないかと思います。 ただ、最終画像をリンクさせたい要望はまだ満たされてないのでサンプルページなどの情報も加えて、新規質問で投稿させていただこうかと思います。 JavaScript(JQuery)でFlashのように表現・・・というのはなかなか難しいです^^;;まだまだ勉強しないと!です 本当にありがとうございました。

その他の回答 (1)

  • m0a13
  • ベストアンサー率47% (9/19)
回答No.1

jQueryで動くように書き直しましてみました。 <script src="http://code.jquery.com/jquery.js"></script> <script language="JavaScript"><!-- $(function() { myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } $("#myFormImg").fadeOut(function() { $(this).attr("src", myImage[myNowCnt]); $(this).fadeIn(function() { setTimeout(function() { myChange(); }, 2000 ); // 2秒周期に画像を更新する }); }); } myChange(); }); // --></script> <img id="myFormImg" src="img/main/f01.jpg" width="900" height="300"> 上の例ではjQuery本体はweb上のものを参照しています。 ちなみにjavascriptとjavaは名前が似ているだけで全くの別物なのでご注意ください。

youdesign
質問者

お礼

ありがとうございます!フェードインフェードアウトになりました! ・・・が、1枚目の画像は始めて読み込んだ直後はすごく大急ぎで表示されて消えてしまいます。読み込んでいる時間も6秒の中にカウントされているのでしょうか。 ということはもっと早くこの画像を読み込ませるようにしないといけないということでしょうか・・・? 全体的に2秒は早かったので6秒に変えたのですが他の画像ももう少しゆっくりイン、アウトって出来ないものなのでしょうか。。 あと、最後の7の画像に表示されている”詳しくはこちら”という文字をクリックしたら、指定のページへリンクされるようにするには "img/main/f07.jpg" の場所に何かを書き足せばいいのでしょうか? もし何かいい方法があるようでしたらご教授いただけないでしょうか? 追加で申し訳ありませんがよろしくお願いいたします。

関連するQ&A

  • javascriptで画像をテーブルに出力する方法

    javascriptで定期的に入れ替えている画像をテーブルに出力(表示)する方法を教えてください。 <html> <head> <script language="JavaScript"><!-- myImageCnt = 4; myImage = new Array( "img0.jpg", "img1.jpg", "img2.jpg", "img3.jpg" ); myNowCnt = 0; function myChange(){ if (myNowCnt == myImageCnt-1){ myNowCnt=0; }else{ myNowCnt++; } document.myFormImg.src = myImage[myNowCnt]; setTimeout( "myChange()" ,5000 ); } // --></script> <img src="img0.jpg" width="200" height="200" name="myFormImg" /> <script language="JavaScript"><!-- myChange(); // --></script> </head> </html>

  • JavaScriptで画像からリンクプラスアルファ

    http://www.printpac.co.jp/ こちらのページの 2段目のスライドしているナビゲーションのようにマウスオ-バーでnext,prevボタンが表示され、それをクリックすると次の画像が即座に表示され、なおかつ目的の画像からは個別のページへリンクする。というものが作りたいと思っています。 今現在はフェードインフェードアウト(画像表示の雰囲気がサンプルとは少し異なります)で画像を7枚順に表示されるようにするところまではOKです。 更に、最後の画像の(giifファイル)中の文字からクリックでリンクに飛ぶ。 そして、3秒周期の表示が待てない人にはnext,prevの矢印がマウスオーバーで出てきて、それをクリックすると次の画像がフェードインする。という風にしたいと思っています。 現在のコードです。 <script src="http://code.jquery.com/jquery.js"></script> <script language="JavaScript"><!-- $(function(){ myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } setTimeout(function() { $("#myFormImg").fadeOut(2000, function() { $(this).attr("src", myImage[myNowCnt]); $(this).fadeIn(1000, function() { myChange(); }); }); }, 3000); // 3秒周期 } myChange(); }); // --></script> <img src="img/main/f01.jpg" width="900" height="300" id="myFormImg"> <script language="JavaScript"><!-- myChange(); // --></script> サンプルのページでは"CSS"と"画像にMap"作ってリンク飛ばして、スライダーの動きはjsファイルで 制御しているようでしたのでこの"Map"を参考にひとまず最後に来るはずの画像を最初に持ってきて画像ファイルにMap作ってリンク飛ばして対応してるのですが、かなり苦し紛れ状態です・・・ 何をどのように記述すれば目的の物が出来るでしょうか? よろしくお願いいたします。

  • ページ更新の度に変わる画像を上部と下部の中央に表示させるには?

    アフィリエイトをやっておりまして、ページを表示するたびにバナーが変わるようにしたいと思っております。Googleで検索しましたところ下のようなJavaScriptを使うことが分かりました。ですがこれは<head>と</head>の間に書かなければなりませんよね?これをページ上部中央と、また下部中央に表示させたいのですが、何を加えればよろしいのでしょうか。また、各画像にリンクをつけるにはどのようにすればよろしいのでしょうか。よろしくおねがいします。 <SCRIPT LANGUAGE = "JavaScript"> myImageCnt = 15; myImage = new Array( "01.jpg", (途中省略) "15.jpg"); myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); </SCRIPT>

  • javascriptで画像をランダム表示させたい

    javascriptで画像をランダム表示させたいと思い、下記ソースを記述しました。 下記ソースでは、画像をランダムに1枚ずつ表示するようになっています。 今回、1枚ずつではなく、50枚ある画像を10枚ずつランダムに表示させたいと思っています。下記ソースから修整するにはどのような考え方になるのか教えていただけませんか? 単純に、 "img/1.jpg", の部分を "img/1.jpg,img/2.jpg,img/3.jpg,img/4.jpg,img/5.jpg", としてみたのですが違うみたいですし、、。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>20110720test</title> </head> <body> <script language="JavaScript"><!-- myImageCnt = 5; myImage = new Array( "img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg" ) myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); // --></script> </body> </html>

  • 画像クリックでウインドウを閉じたいのですが・・・

    こんにちは。JavaScriptはwebサイトから頂いて コピーして使うだけの理解力です。どうぞよろしくお願いします。 フォトアルバムを作っていまして、画像をクリックするごとに 画像が入れ替わるところまではできたのですが、 それですと延々と続いてしまいますので、最後の画像で小窓ごと 閉じてしまいたいのですが、どのようなタグになりますでしょうか? HEADに <SCRIPT LANGUAGE="JavaScript"> <!--// img = new Array("http://www5b.biglobe.ne.jp/○○.jpg","http://www5b.biglobe.ne.jp/○○2.jpg","http://www5b.biglobe.ne.jp/○○3.jpg"); i=0; function myChange(){ i++; i %=img.length; document.my_imgchange.src = img[i]; } // --> </SCRIPT> bodyに <a href="JavaScript:myChange()"><img src="http://www5b.biglobe.ne.jp/○○.jpg" border="0" name="my_imgchange"> と入れています。 例えば3枚目の画像をクリックした時に、また1枚目の画像に戻るのではなくて、 小窓ごと閉じてしまうにはどのようなタグをどこへ埋め込めばよろしいでしょうか? 色々試してみましたがうまくいきませんでした。 どなたか力をお貸しください。どうぞよろしくお願い致します。

  • JAVAスクリプトでサイズを変更した写真をランダム表示させる方法

    はじめまして。 現在ホームページビルダー10でホームページを作成しているのですが、 JAVAスクリプトで画像をランダム表示させるようにしたいです。 素人でよくわからなかったので、いろんなサイトを参考にしてなんとか 表示できるようにはなったのですが、写真のサイズを変更すると ×マークが出てしまいうまく表示できません。 どうしたらいいのでしょうか? 色々試してみたのですが、素人なのでほんとにわからなくて困ってます。 どなたかわかる方がいたらぜひ教えて下さい。 よろしくお願いします! ちなみに、このソースを書き込んでいます。 <script language="JavaScript"><!-- myImageCnt = 3; myImage = new Array( "2874.jpg", "P10101932.jpg", "4752.jpg" ); myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); // --></script>

  • jqueryサブウィンドウにて画像切替サブ画像表示

    質問お願いします。 元ページのサムネイル画像をクリックすると サブウィンドウが開き、この中でクリックした先ほどサムネイルの拡大画像を表示、他のサムネイル画像も表示し、サムネイルをクリックで拡大画像を切り替え、それぞれの画像に応じたサブ画像も表示させたいと思っています。 一番はクリックデータをサブウィンドウにもっていく方法がわかりません。 イメージで元ページ内での切替をやってみました <style> li img{width:100px;height:100px;} </style> ----jquery----- <script type="text/javascript"> $(function(){ $('li img').click( function(){ $('#main img').attr('src',$(this).attr('src')); $('#sub').text($(this).attr('title')); var postfix = '_on'; var src = $(this).attr('src'); var src_on = src.substr(0, src.lastIndexOf('.')) + postfix + src.substring(src.lastIndexOf('.')); $('#sub2 img').attr('src',src_on); }); }); </script> ---html---- <ul> <li><img src="red.jpg" title="赤"></li> <li><img src="blue.jpg" title="青"></li> <li><img src="winter.jpg" title="冬"></li> <li><img src="green.jpg" title="緑"></li> </ul> <div id="main"><img src="red.jpg" id="mainimg"></div> <p id="sub">赤</p> <p id="sub2"><img src="red_on.jpg"></p> 質問が分かりづらいかもしれませんが、よろしくお願いします。

  • 画像切り換えでTransitionをかけたい。

    フリーソースでの応用なのですが 次のJavaScriptで画像の自動切り換え表示に Transitionをかけたいのですが、知識がなくてわかりません。 アドバイスをお願いいたします。 <SCRIPT LANGUAGE="JavaScript"> <!-- var num = 1; function timer () { if(document.img.complete) { document.img.src = "photo" + num + ".jpg"; num++; if(num > 5) num = 1; } setTimeout("timer()", 1000); } //--> </SCRIPT> <SCRIPT LANGUAGE="JavaScript"> function viewSource(){ location = "view-source:" + window.location; } </SCRIPT> ----------- <BODY onload="setTimeout('timer()', 2000);"> <IMG SRC="photo1.jpg" NAME="img"> -----------

  • 毎日違う画像を表示させるには

    私はJavaScriptは初心者です。悩んでここに投稿させて頂きました。 JavaScriptで毎日(24時間ごとに)違う画像を表示させようと考えています。 以下を実行したのですがIEだけ画像が表示されません。 どなた様か、おかしいところ、また違うJavaScriptの記述でも構いません。 教授いただけると幸いです。 <SCRIPT LANGUAGE=javascript> <!-- var ig = new Array(); ig[1]="1.jpg"; ig[2]="2.jpg"; ig[3]="3.jpg"; ig[4]="4.jpg"; ig[5]="5.jpg"; ig[6]="6.jpg"; ig[7]="7.jpg"; function window_onload() { var d = new Date(); img = document.getElementById("img"); window.status=d.getMonth()+1 + "/"+d.getDate() + "/"+ d.getYear(); var no = d.getDate()%7; img.src=ig[no]; img.insertAdjacentHTML("afterEnd",no+":"+ig[no]); } //--> </SCRIPT> </HEAD> <BODY LANGUAGE=javascript onload="return window_onload()"> <P><img id=img></P> </BODY>

  • tableの表示位地

    こんにちは。 HTML超初心者です。初心者のくせして作りたい形は頭にあったりします。 画像がランダムに表示されるjavascriptをコピーしてきました。 画像を入れ替えて、それがちゃんと表示されています。 その画像の表示されている上の位地にtableを入れたいのですが、 書き込んでみても、ランダムに表示される画像と横にならんでしまいます。 どのようにしたら、tableと画像を縦に並ばせることができるのでしょうか? かなり初歩的なことだと思いますが、どなたかよろしくお願いします。 ちなみに下のようなjavascriptです。 <SCRIPT language="JavaScript"> <!-- // ランダムに画像を表示する img = new Array(); img[0] = "img/img0.jpg"; img[1] = "img/img1.jpg"; img[2] = "img/img2.jpg"; img[3] = "img/img3.jpg"; img[4] = "img/img4.jpg"; n = Math.floor(Math.random()*img.length); document.write("<img src='"+img[n]+"' border='0'>"); //--> </SCRIPT>

    • ベストアンサー
    • HTML