HTMLの画像を最初にロードする方法とは?

このQ&Aのポイント
  • WEBページで画像の掲載ページを作成しています。サムネイルにマウスオーバーすると指定場所に画像をプレビュー表示する仕組みですが、マウスオーバーした際に画像のロードを開始するため、ロード時間があり、スムーズに見れない状態です。
  • ページのはじっこに全ての画像を設置しておく方法があります。この方法では、ページを開いた際に全ての画像を事前にロードできるため、マウスオーバー後のロードが早くなります。
  • 他にも、あらかじめ全ての画像を読み込むタグや技術が存在する可能性があります。この方法よりも効率的な方法があるかもしれません。
回答を見る
  • ベストアンサー

HTMLの画像を最初にロードしようと思います

WEBページで画像の掲載ページを作成しています。 サムネイルにマウスオーバーすると指定場所に 画像をプレビュー表示する仕組みです。 しかしマウスオーバーした際に初めて画像のロードを開始するため、 一つオーバーする度に数秒ロードする時間があり、あまりサクサク見れない状態です。 この回避方法として、ページのはじっこに1px * 1pxで見えないように 全ての画像を設置しておき、ページを開いた際に あらかじめ全ての画像をロードしておこうかと考えています。 これについて質問なのですが (1)この方法に何かデメリットはあるのか? →自分で試してみたところ特にデメリットは感じず  想定通りマウスオーバー後のロードが早くなりました。 (2)このほかに(もっといい方法が)あるのか? →今の時代こんなアナログな方法よりも  あらかじめ全ての画像を読み込むようなタグがありそうな気もします・・。 公開時期が割りと迫っているため、 とても困っているに設定しました。 よろしくお願いします。

  • CSS
  • 回答数4
  • ありがとう数1

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

  • ベストアンサー
  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.2

・その度に画像を編集するのは少々効率が悪いように感じます…。  その点では効率が悪いです。 ・また、1枚物の巨大な画像ということですと、逆に言えばその1枚の読み込みにかなり時間がかかってしまうことはデメリットのように感じます。  javascriptと異なり、画像をすでに読み込んでいるので動作は速いはずです。また、一枚よりは連結したほうが総サイズは小さくなります。 ●事前にファイルを読ませておく前提だと、スタイルシートのほうが効率的です。 ・サムネイルにそのまま画像を読み込ませる手段は  これが一番早いです。  先のサンプルを次のように変更する。 __<li><a href=""><img src="images/01.jpg" alt="あいう" width="80" height="51"></a> ___<ul> ____<li style="background-image:url(images/01.jpg)"><span>あ行の文字です。</span></li> ___</ul> 下記を削除 ul.album ul li{ background-image:url(images/full.jpg); } ・画像を読み込み用として隠し画像という形にしていて、  その画像にリンクを張っていれば、『隠しテキストと隠しリンク ( http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=66353 )』に該当する可能性も・・

その他の回答 (3)

  • aspnet
  • ベストアンサー率79% (72/91)
回答No.4

いったん画面表示を行ってから、ロールオーバー用画像読込みを行えばいいんではない? 以下のJavaScriptを、htmlの末尾とか、jQueryの$(function(){})に実行文として書いておけば、画面表示を先に行い、遅延して先読を行う、と思う。表示も速いし、先読みもしっかり行われる。 var imgArray = [ "img1.jpg", "img2.jpg", "img3.jpg" ] for (var i= 0 ; i < imgArray.length;i++){ var image1 = new Image(); image1.src = imgArray[i]; // srcプロパティ設定->読込実行 } いきなりマウスオーバされれば、先読みが完了していないのでアレですが、最初の閲覧でそんなことは稀だし、2回目からはキャッシュが効くので読み込みは瞬時に終了する、と。 こんなんじゃ駄目ですか?

noname#158634
noname#158634
回答No.3

(1)最初に全部読み込むのだから当然その分は遅くなる (2)「タグ」はありません。HTMLはそんなことに使うものではないから。ただし、Javascriptを使っていいのであれば先読みすることで「あらかじめ全ての画像を読み込む」ことはできます。「1px * 1pxで見えないように」なんていう怪しい方法はとらずに済みますが、当然(1)と同様です。 なお、「マウスオーバーごとの読み込み」と「最初に全部読み込み」は普通の方法では完全にトレードオフです。というか理論上このどちらでもない方法でロールオーバー時の画像を表示することはできないといったほうがいいか。 それからちなみに、何百枚何千枚と画像があるのでもない限り「あらかじめ全ての画像を読み込む」ことによる時間差は無視できるほど小さいものですので問題になりません。(1)でご自身で退官した通りです。

  • ORUKA1951
  • ベストアンサー率45% (5062/11036)
回答No.1

隠し画像はSEO的にもまずいので、その場合は、画像を一枚にしておきます。 a.jpg~d.jpgの4枚がそれぞれ480px×360pxの画像だとすると、それを一枚の1,920px×360pxにしておきます。 その上で、画像をずらして表示する。 シンプルな方法です。 _<ul class="album"> __<li><a href=""><img src="images/thumbnail/01.jpg" alt="あいう" width="80" height="51"></a> ___<ul> ____<li style="background-position:0 0"><span>あ行の文字です。</span></li> ___</ul> __</li> __<li><a href=""><img src="images/thumbnail/02.jpg" alt="かきく" width="80" height="51"></a> ___<ul> ____<li style="background-position:480px 0"><span>か行の文字です。</span></li> ___</ul> __</li> __<li><a href=""><img src="images/thumbnail/03.jpg" alt="さしす" width="80" height="51"></a> ___<ul> ____<li style="background-position:960px 0"><span>さ行の文字です。</span></li> ___</ul> __</li> __<li><a href=""><img src="images/thumbnail/04.jpg" alt="たちつ" width="80" height="51"></a> ___<ul> ____<li style="background-position:1440px 0"><span>た行の文字です。</span></li> ___</ul> __</li> _</ul> [CSS] ul.album,ul.album li,ul.album li ul,ul.album li ul li{display:block;list-style:none;margin:0;padding:0;} ul.album{ position:relative; width:650px;height:400px; margin:0 auto; border:solid 1px gray; } ul.album ul{ position:absolute; right:0;top:0; width:480px;height:360px; } ul.album ul li{ background-image:url(images/full.jpg); } ul.album ul li span{visibility:hidden;} ul.album li ul li{display:none;} ul.album li:hover ul li{display:block;width:100%;height:100%;} } ★時間がないのでしたら、サムネイル自身に本物画像を縮小して表示すると言う手もある。どうせ大きな画像を読ませるなら・・

osyoyu
質問者

お礼

お早いご回答ありがとうございます。 なるほど!そうゆうやり方もあるんですね。 確かの他のサイトでJSを使って 1枚物のサムネイルを流しているのをよく見るような気がします。 しかし以下の点が気になりました。 ・現在作成しているものは追加で画像が増えていく可能性が高く、  その度に画像を編集するのは少々効率が悪いように感じます…。  (書いてなくてすみません) ・また、1枚物の巨大な画像ということですと、  逆に言えばその1枚の読み込みにかなり時間がかかってしまうことは  デメリットのように感じます。  (1枚ずつ配置していればバラバラに読み込むのでその問題がない) にしてもそれが一般的なのでしょうかw サムネイルにそのまま画像を読み込ませる手段は 最初にやってみたのですが、マウスオーバーにCSSで効果をかけていたため やたら重くなってしまいました。 (元が大きな画像に効果をかけているためだと思います) あとSEO的な部分はあまり詳しくないのですが、 画像を読み込み用として隠し画像という形にしていて、無関係なものではなく あくまで実際に掲載しているものなのであまり問題がないのかなと思っていました。

関連するQ&A

  • HTML上の画像にマウスオーバーして、同HTML内にswfを表示させたい

    HTMLページ内のサムネイル画像にマウスオーバーして大きい画像を表示させるJavaScriptがありますが、そういうイメージでswfの表示ができないでしょうか。 マウスオーバーじゃなくて、クリックでもいいのですが、ポップアップウインドウや別ページに表示させるのではなく、サムネイル画像をクリックすると、同一ページのお決まりの場所でswfムービーを表示させたいのです。 表示させるムービーは、音声が流れたり、swf内で数ページクリックして内容が見れるものです。誰か、ご存知の方、いらっしゃいませんか?よろしくお願いします。

    • ベストアンサー
    • Flash
  • サムネイル画像をマウスオーバーすると写真が切り替わる方法

    htmlでホームページを作っているのですが、大きな写真の横に小さなサムネイル画像(前面、背面など角度の違う写真)を載せて、サムネイルをマウスオーバーすると同一のページで大きな写真が切り替わる仕組みを作りたいのですが、やり方がわかりません。 比較的簡単な方法での作り方を教えてください。宜しくお願いします。

  • ホームページのUPロードについて

    私はUPロードする際FFFTPを利用していますが、更新すると終わりまでUPロード出来ません。それで、あるページにサムネイルを使用しています。そして更に違うページにもサムネイルを使用してUPロードしましたが失敗ばかりします。そこで2か所目のサムネイルの使用を止めてUPロードしました。今度は成功しました。サムネイルの使用は1ページしか許可されないのでしょうか?ちなみに与えられた10MBよりずっと少ないです。現在2.5MBです。増やしたサムネイルを使用しても2.8MBです。でも、出来なかったので、今現在は2.5MBです。どうして駄目なのでしょうか?分からないのですが・・・更新する際いちいち全部ホスト側を削除してから新たにUPロードしています。 教えて下さい。お願いします。

  • Flashで画像を拡大縮小する時の画像の荒れを防止する方法を教えてください。

    Flashで、「画像にマウスが乗ると拡大する」というムービークリップを作っています。 画像は、拡大した時のサイズで作成し、Flashに読み込んでいるのですが、 ファイルサイズを縮小する時、プレビューすると画像が荒れてしまいます。 それを回避する方法教えていただければとても助かります。 拡大縮小の指示は(画像のMCに) onClipEvent(load){ wideX = [245,300]; a = 0; function move(x){ a = x; } } onClipEvent(enterFrame){ this._height = 0.666*this._width; //縦横比を固定 this._width += (wideX[a] - this._width)/3; } です。 横幅300pxで取り込んだ画像の横幅を、245pxか300pxにしています。

    • ベストアンサー
    • Flash
  • JQueryでサムネ付スライドショークロスフェード

    JQueryでクリックを使用せず、自動クロスフェードのサムネイル付きスライドショー&マウスオーバーでもクロスフェードで切り替わるようにするためにはどうすればよいでしょうか? 更にはスライドショーにキャプションがつけられたら最高です。 スライドショーの幅はwidth: 354px; height: 280px;、サムネイルはその下に縦3つ、横3つの計9つ配置します。 スライドショーは自動フォロスフェードによるループ、またサムネイルをマウスオーバーでもその画像にクロスフェードイン、その際スライドショー内に表示されている&マウスオーバーされているサムネイルの画像は罫で仕切るか、半透明がクリアに表示されるといった処理を考えております。 恥ずかしながら調べても分からなかったので、皆さまの知識を拝借したく投稿させて頂きました。 恐れ入りますが、何卒ご助言下さいますよう、よろしくお願い致します。

  • マウスオーバー時に動画をプレビューする方法

    こんにちは。javascriptを勉強中の初心者です。 最終的にはhtml、javascriptを使ってHTA(HTML Application)でメニュー画面を作ろうと思っています。 そのひとつで、動画のサムネイルを並べてマウスオーバー時に そのサムネイルのみ動画を簡易プレビューする方法を探しています。 プレビュー時、若干大きくなるのが理想ですが、 そのままのサイズでもプレビューできるのであればかまいません。 (サムネイルを大きくするなどして対応します) FLASHではflv再生でできるのは知っているのですが、 javascriptでも可能でしょうか? クリック時は外部プレーヤー起動して動画を再生させます。 動画やサムネイル画像などのソースはすべてローカルです。 ご教授お願いします。

  • 画像掲示板のサムネイル

    画像掲示板のサムネイルというのは、大きくすればやはりページを開くのは遅くなるのでしょうか? 例えば、同条件下で 100px×100px から 200px×200px に変えると、単純に開くのにかかる時間が4倍になるのでしょうか?

  • 画像、動画データにマウスポイントを合わせると横に2

    画像、動画データにマウスポイントを合わせると横にプレビューみたいな形で画面が出てきて画像がサムネイルより少し大きく表示されたり、動画は再生されたりするのですがこれを止めたいのですが何か方法はありますでしょうか?

  • winXPの画像サムネイル画像とプレビュー画像について

    winXPにはJPEG形式のが画像の他にサムネイル用画像があるとそれがサムネイルになる、 と、聞いたのですが、どうすればそれと同じことが出来るでしょうか? 他の言い方では、画像の表示方法の「縮小版」で画像のサムネイルを見ると、元のプレビュー画像と違うようにすることが出来る、でしょうか。 それが出来るソフトか何かがあれば教えてほしいと思います。 このことに関して気になりますので教えてほしいです。お願いします。

  • 画像、動画データにマウスポイントを合わせると横に

    こんにちは、お世話になります。 画像、動画データにマウスポイントを合わせると横にプレビューみたいな形で画面が出てきて画像がサムネイルより少し大きく表示されたり、動画は再生されたりするのですがこれを止めたいのですが何か方法はありますでしょうか? わかりにくいかもしれませんが、ご回答よろしくお願いいたします。

専門家に質問してみよう