ホームページ  >  記事  >  ウェブフロントエンド  >  jsでの画像の遅延読み込みの実装原理を詳しく解説

jsでの画像の遅延読み込みの実装原理を詳しく解説

王林
王林転載
2020-04-02 09:20:232515ブラウズ

jsでの画像の遅延読み込みの実装原理を詳しく解説

画像の遅延読み込みの利点:

ユーザー エクスペリエンスの向上;

コードの最適化;

http リクエストの削減;

サーバー側の負荷の軽減;

サーバーのオンデマンド読み込み;

画像の遅延読み込みの原則:

まず、画像の src を同じ画像に設定するか、設定せずに、img タグに特別な属性を設定します。たとえば、data-src は、画像の実際のプレビュー アドレスを保存するために使用されます。画像; 画像が可視領域に入らない場合、同じ画像を表示するか、画像を直接表示しない場合、この時点では http リクエストは発生しません 画像が可視領域に入ると、data-src の値が代入されますsrc にアクセスすると、http リクエストが送信されます。

Key: 画像が表示領域に入るかを決定します (キー機能)

ページの表示領域の幅: document.body.clientWidth;

Web ページの可視領域の高さ: document.body.clientHeight;

Web ページの可視領域の幅: document.body.offsetWidth (端の幅を含む);

Web ページ本文の全テキストの幅: document.body.scrollWidth;

Web ページ本文の全テキストの高さ: document.body.scrollHeight;

Webページがスクロールされる ページの高さ: document.body.scrollTop;

スクロールされる Web ページの左側: document.body.scrollLeft; テキスト部分が左: window.screenLeft;

画面解像度の高さ: window.screen.height;

画面解像度の幅: window.screen.width;

画面で利用可能な作業領域の高さ: window.screen.availHeight ;

offsetParent 要素の上部を基準とした現在の要素の距離: HTMLElement.offsetTop;

ブラウザ ウィンドウのビューポートの高さ (ピクセル単位): window.innerHeight; (If水平スクロール バーがあり、スクロール バーの高さも含まれます)

(推奨チュートリアル:

js チュートリアル

)

コード実装:

html パート

<div>
  <img src="./img/1.jpg" data-src="./img/1.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/2.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/3.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/4.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/5.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/6.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/7.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/8.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/9.jpg" alt="">
  <img src="./img/1.jpg" data-src="./img/10.jpg" alt="">
 </div>
js パート
window.onload = () => {
   // 获取某节点与浏览器顶部的距离
   function getTop(e) {
    if (!e) return
    return e.offsetTop
   }
   let imgs = document.getElementsByTagName(&#39;img&#39;)
   function lazyLoading(imgs) {
    // 可是区域高度
    let innerHeight = window.innerHeight;
    // 滚动区域高度
    let scrollTop = document.documentElement.scrollTop || document.body.scrollTop;
    for (let i = 0; i < imgs.length; i++) {
     // 图片距离顶部的距离大于可视区域和滚动区域之和时加载
     if (scrollTop + innerHeight > getTop(imgs[i])) {
      imgs[i].src = imgs[i].getAttribute(&#39;data-src&#39;)
     }
    }
   }
   lazyLoading(imgs)
   window.onscroll = () => {
    lazyLoading(imgs)
   }
  }

以上がjsでの画像の遅延読み込みの実装原理を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。