ホームページ ウェブフロントエンド jsチュートリアル js は、Web ページを開く速度を向上させるために Web ページ画像の遅延読み込みを実装します_JavaScript スキル

js は、Web ページを開く速度を向上させるために Web ページ画像の遅延読み込みを実装します_JavaScript スキル

May 16, 2016 pm 03:17 PM

Web ページの読み込み速度を向上させる方法はたくさんあります。jquery.lazyload.js を使用して画像の非同期遅延読み込みを実装することは、画像がたくさんある Web サイトで Web ページを開く速度を向上させる良い方法です。ページ。 Code Jun Webサイトのコラムリストの左側に、PCでプレビューする際の記事サムネイル表示モジュールが表示されます。これにより、Webページの読み込み時間がある程度長くなります。この記事では、画像の非同期遅延読み込み方式を使用して、この Web サイトのページ読み込み速度を向上させています。

画像は非同期で読み込まれます。つまり、ページ上のすべての画像を一度に読み込んで表示する必要はありません。ユーザーがスクロール バーを特定の位置までスライドすると、対応する位置の画像が読み込まれ、表示されます。これにより、Web ページの読み込み速度がさらに向上します。

多くの写真を含む技術記事が多数あり、Web ページを開いたときにすべての写真を一度に読み込む必要がある場合、ユーザーは間違いなく非常に長い時間を待たなければなりません。このアプローチではユーザー エクスペリエンスが非常に悪くなりますが、ページ上のすべての画像を一度に読み込む必要はありません。画像の非同期遅延読み込みは、Web デザインにおいて最も合理的で適切なアプローチです。

画像の非同期遅延読み込みを実装するには、jquery.lazyload.js を使用します。最初に jQuery をロードすることを忘れないでください。

1. JS プラグインをインポートします:

1

2

<script type="text/javascript" src="jquery.js"></script>

<script type="text/javascript" src="jquery.lazyload.js"></script>

ログイン後にコピー

2. ページに JavaScript コードを挿入します:

1

2

3

4

5

6

$(document).ready(function($){

$("img").lazyload({

placeholder:"grey.gif", //加载图片前的占位图片

effect:"fadeIn" //加载图片使用的效果(淡入)

});

});

ログイン後にコピー

上記の 2 つの手順により、Web ページ画像の非同期遅延読み込みを簡単に実装できます。

詳しくご紹介しましょう:
大きな Web サイトでは、ページに多数の画像が含まれている場合、対応する行までスクロールすると、ページを開いたときに現在の行の画像がすぐに読み込まれます。追加され、他の画像は追加されません。これにより、このソリューションはページの読み込みが高速化されます。

推奨: 画像遅延を実現するには、jquery 画像遅延読み込みプラグイン jquery.lazyload を使用します

実装原則:

遅延ロードする必要があるすべての画像を次の形式に変更します:

1

<img lazy_src="图片路径" border="0"/>

ログイン後にコピー

ページが読み込まれると、lazy_src を使用してすべての画像を配列に保存し、スクロール時に表示領域の上部を計算し、遅延して読み込まれた画像の上部を現在の表示領域よりも小さくします (つまり、画像 表示領域に表示される画像の src 値は、lazy_src に置き換えられます (画像をロードします):

JS コード:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

lazyLoad = (function() {

  

  var map_element = {};

  

  var element_obj = [];

  

  var download_count = 0;

  

  var last_offset = -1;

  

  var doc_body;

  

  var doc_element;

  

  var lazy_load_tag;

  

  function initVar(tags) {

  

    doc_body = document.body;

  

    doc_element = document.compatMode == 'BackCompat' &#63; doc_body : document.documentElement;

  

    lazy_load_tag = tags || ["img", "iframe"];

  

  };

  

  function initElementMap() {

  

    var all_element = [];

  

    //从所有相关元素中找出需要延时加载的元素

  

    for (var i = 0,

  

len = lazy_load_tag.length; i < len; i++) {

  

      var el = document.getElementsByTagName(lazy_load_tag[i]);

  

      for (var j = 0,

  

len2 = el.length; j < len2; j++) {

  

        if (typeof (el[j]) == "object" && el[j].getAttribute("lazy_src")) {

  

          element_obj.push(all_element[key]);

  

        }

  

      }

  

    }

  

   

  

    for (var i = 0,

  

len = element_obj.length; i < len; i++) {

  

      var o_img = element_obj[i];

  

      var t_index = getAbsoluteTop(o_img); //得到图片相对document的距上距离

  

      if (map_element[t_index]) {

  

        map_element[t_index].push(i);

  

      } else {

  

        //按距上距离保存一个队列

  

        var t_array = [];

  

        t_array[0] = i;

  

        map_element[t_index] = t_array;

  

        download_count++; //需要延时加载的图片数量

  

      }

  

    }

  

   

  

  };

  

  function initDownloadListen() {

  

    if (!download_count) return;

  

    var offset = (window.MessageEvent && !document.getBoxObjectFor) &#63; doc_body.scrollTop : doc_element.scrollTop;

  

    //可视化区域的offtset=document的高+

  

    var visio_offset = offset + doc_element.clientHeight;

  

    if (last_offset == visio_offset) {

  

      setTimeout(initDownloadListen, 200);

  

      return;

  

    }

  

    last_offset = visio_offset;

  

    var visio_height = doc_element.clientHeight;

  

    var img_show_height = visio_height + offset;

  

    for (var key in map_element) {

  

      if (img_show_height > key) {

  

        var t_o = map_element[key];

  

        var img_vl = t_o.length;

  

        for (var l = 0; l < img_vl; l++) {

  

          element_obj[t_o[l]].src = element_obj[t_o[l]].getAttribute("lazy_src");

  

        }

  

        delete map_element[key];

  

        download_count--;

  

      }

  

    }

  

    setTimeout(initDownloadListen, 200);

  

  };

  

  function getAbsoluteTop(element) {

  

    if (arguments.length != 1 || element == null) {

  

      return null;

  

    }

  

    var offsetTop = element.offsetTop;

  

    while (element = element.offsetParent) {

  

      offsetTop += element.offsetTop;

  

    }

  

    return offsetTop;

  

  }

  

  function init(tags) {

  

    initVar(tags);

  

    initElementMap();

  

    initDownloadListen();

  

  };

  

  return {

  

    init: init

  

  }

  

})();

ログイン後にコピー

使い方: ページ上の遅延読み込みが必要な画像のsrcをlazy_srcに変更し、ボディの最後に上記のjsを入れてlazyLoad.initを呼び出します。 ();
からかいの方法では、firebug を使用して、一時イメージの読み込みが遅延していないかどうかを確認できます。
また:
ページにコンテンツが切り替わる列がある場合、切り替え時にコンテンツ内の画像が表示されない場合があります。解決策は、次のようにコンテンツ中に画像を個別に読み込むことです。

1

2

3

4

5

6

7

8

9

///切换内容的代码…

  

 chlid.find("img[init_src]").each(function(){

  

  $(this).attr("src",$(this).attr("init_src"));

  

  $(this).removeAttr("init_src");

  

 });

ログイン後にコピー
いわゆる

画像の非同期読み込み は、すべての画像を一度に読み込む必要がないことを意味し、遅延読み込みまたはバッファー読み込みと呼ぶことができます。

このニーズがあるかどうかを見てみましょう。記事内に多くの写真があるため、記事を読み込むときにすべての写真を読み込むと、間違いなく読み込み速度が遅くなり、ユーザーの待ち時間が長くなります。 Web ページがブラウザの視野内にある画像のみを読み込むことを許可するプラグインです。その範囲内に表示されない画像は一時的に読み込まれず、ユーザーがスライドすると徐々に読み込まれます。この効果を実現するには、スクロール バーを使用します。

Lazyload.js は実際には jQuery のプラグインであり、名前を見ただけでその機能がわかります。これは遅延読み込みを意味します。 JavaScript で書かれているので、WordPress を含むすべての Web ページに適しています。

Lazyload を使用したい場合は、まず jQuery をロードする必要があります。これは、効果を実現するために jQuery に依存します。

上記がこの記事の全内容です。Web ページ画像の遅延読み込みを実装するための js についての理解を深めていただければ幸いです。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScript文字列置換法とFAQの詳細な説明 この記事では、javaScriptの文字列文字を置き換える2つの方法について説明します:内部JavaScriptコードとWebページの内部HTML。 JavaScriptコード内の文字列を交換します 最も直接的な方法は、置換()メソッドを使用することです。 str = str.replace( "find"、 "置換"); この方法は、最初の一致のみを置き換えます。すべての一致を置き換えるには、正規表現を使用して、グローバルフラグGを追加します。 str = str.replace(/fi

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

このチュートリアルでは、カスタムGoogle検索APIをブログまたはWebサイトに統合する方法を示し、標準のWordPressテーマ検索関数よりも洗練された検索エクスペリエンスを提供します。 驚くほど簡単です!検索をyに制限することができます

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

それで、あなたはここで、Ajaxと呼ばれるこのことについてすべてを学ぶ準備ができています。しかし、それは正確には何ですか? Ajaxという用語は、動的でインタラクティブなWebコンテンツを作成するために使用されるテクノロジーのゆるいグループ化を指します。 Ajaxという用語は、もともとJesse Jによって造られました

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

この記事シリーズは、2017年半ばに最新の情報と新鮮な例で書き直されました。 このJSONの例では、JSON形式を使用してファイルに単純な値を保存する方法について説明します。 キー価値ペア表記を使用して、あらゆる種類を保存できます

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

楽なWebページレイアウトのためにjQueryを活用する:8本質的なプラグイン jQueryは、Webページのレイアウトを大幅に簡素化します。 この記事では、プロセスを合理化する8つの強力なjQueryプラグイン、特に手動のウェブサイトの作成に役立ちます

&#x27; this&#x27; JavaScriptで? &#x27; this&#x27; JavaScriptで? Mar 04, 2025 am 01:15 AM

コアポイント これは通常、メソッドを「所有」するオブジェクトを指しますが、関数がどのように呼び出されるかに依存します。 現在のオブジェクトがない場合、これはグローバルオブジェクトを指します。 Webブラウザでは、ウィンドウで表されます。 関数を呼び出すと、これはグローバルオブジェクトを維持しますが、オブジェクトコンストラクターまたはそのメソッドを呼び出すとき、これはオブジェクトのインスタンスを指します。 call()、apply()、bind()などのメソッドを使用して、このコンテキストを変更できます。これらのメソッドは、与えられたこの値とパラメーターを使用して関数を呼び出します。 JavaScriptは優れたプログラミング言語です。数年前、この文はそうでした

ソースビューアーでjQueryの知識を向上させます ソースビューアーでjQueryの知識を向上させます Mar 05, 2025 am 12:54 AM

jQueryは素晴らしいJavaScriptフレームワークです。ただし、他のライブラリと同様に、何が起こっているのかを発見するためにフードの下に入る必要がある場合があります。おそらく、バグをトレースしているか、jQueryが特定のUIをどのように達成するかに興味があるからです

モバイル開発用のモバイルチートシート10個 モバイル開発用のモバイルチートシート10個 Mar 05, 2025 am 12:43 AM

この投稿は、Android、BlackBerry、およびiPhoneアプリ開発用の有用なチートシート、リファレンスガイド、クイックレシピ、コードスニペットをコンパイルします。 開発者がいないべきではありません! タッチジェスチャーリファレンスガイド(PDF) Desigの貴重なリソース

See all articles