質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

1333閲覧

多くの<img>があるとき、CSS「display:none;」か、JavaScript「append」か?

ageo

総合スコア2

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/10/03 23:29

###質問の概要
CSSで「display: none;」した場合、その<img>は読まれているのでしょうか?

###質問の詳細
「お気に入り記事一覧」を表示するとき、そのサムネを「表示ボタン」で表示切替でできるように考えています

何百件ものお気に入りのサムネを表示すると、Lazy Loadを使うとしても読み込みが遅いためです

その機能実装において、以下どちらの方法にしたらいいのか判断ができません

このどちらがいいとか、他にいい方法などがございましたら教えて頂けないでしょうか?

###考えている方法
方法A
1.あらかじめHTMLに<img>を入れておき
2.CSSで「display: none;」しておいて
3.「表示ボタン」クリック時に「display:block;」にする

方法B
1.あらかじめHTMLに<img>は入れないで
2.srcをデータ属性で持たせておき
3.「表示ボタン」クリック時にJSで<img>を挿入

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

画像100枚で試したことがあります。
結果は

・「display:none;」の場合
タグが存在しているので画像は読み込まれる。
これを利用した「画像の先読み機能の実装」という手段があります。

・「imgタグが無い場合」
画像へのURLが無い為読み込まれない
でした。

質問者様の要望されている事は
[Lazy Load]ですので「画像の遅延読み込み」ではないかと思います。

HTML

1<img data-src="image001.png">

<img>タグへの画像URL指定が通常の[src]ではなく[data-src]であることに注意してください。
この状態の<img>タグは画像を読み込んではいません。
スクロール等で画像描写位置に近づいた時

HTML

1<img data-src="image001.png" src="image001.png">

と書き換えて画像を取得します。
ただこの方式だと画像情報が無い為レイアウトが崩れる可能性があります。

どちらにしても数百枚の読み込みで時間をとられるのなら
CSSやjQuery等でアニメーションを追加して画像読み込みの遅さをカバーするという手法もあります。
(ローディング画面をローディング画面と思わせず演出と認識させる)

あとはメイン表示の時読み込みに時間をかけるか(先読み)
各画像を表示する時に時間をかける(遅延読み込み)かは
試されて選択されるのがよいかと思います。

投稿2020/10/04 05:56

編集2020/10/04 06:50
kuma_kuma_

総合スコア2506

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ageo

2020/10/04 08:39

ご回答ありがとうございます スクロール位置に応じて置換する方法はいいですね 採用させていただきます
guest

0

CSSで「display: none;」した場合、その<img>は読まれているのでしょうか?

それは試せば分かることなので、サポート対象としているブラウザのDevelopper Toolsで検証してください
下記はGoogle Chromeの場合で、[Network] タブでファイルが読み込まれたかどうかが分かります。

各々のブラウザのDevelopperToolsはGoogle検索で出てきますので、確認して下さい。

「Operaは display: noneしたリソースを読み込まない」など、実装依存のある挙動だったと記憶しています。
サポート対象のブラウザ全てで検証することをお勧めします。

Re: ageo さん

投稿2020/10/03 23:37

think49

総合スコア18189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ageo

2020/10/04 08:37

ご回答ありがとうございます 開発ツールで見れることを知りませんでした 面倒ですがやはり検証は大事ですね…
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問