1. 程式人生 > >jQuery實現圖片懶載入的兩種方法記錄

jQuery實現圖片懶載入的兩種方法記錄

記錄一

整體思路:

  • 設定個data-original(自定義一個屬性)來存放真實地址
  • 當滾動頁面時,檢查所有的img標籤,看是否出現在視野中,如果已經出現在了視野中,那繼續再進行判斷,看其是否已經被載入過了,如果還沒有被載入過,那就進行載入。

程式碼:

    lazyRender(); 
    var clock; //優化思路是當滑鼠滾輪停止滾動的時候,再去判定是否存在在視野中,而不是滾動過程中一直觸發。
    $(window).on('scroll',function () {//當頁面滾動的時候繫結事件
        if (clock) { // 如果在300毫秒內進行scroll的話,都會被clearTimeout掉,setTimeout不會執行。
                     // 如果有300毫秒外的操作,會得到一個新的timeID即clock,會執行一次setTimeout,然後儲存這次setTimeout的ID,
                     // 對於300毫秒內的scroll事件,不會生成新的timeID值,所以會一直被clearTimeout掉,不會執行setTimeout.
            clearTimeout(clock);
        }
        clock = setTimeout(function () {
            console.log('運行了一次');
            lazyRender();
        },200)
    })
    function lazyRender () {
        $('img.lazy-load').each(function () {
            if (checkShow($(this)) && !isLoaded($(this)) ){
                loadImg($(this));
            }
        })
    }
    function checkShow($img) { // 傳入一個img的jq物件
        var scrollTop = $(window).scrollTop();  //即頁面向上滾動的距離
        var windowHeight = $(window).height(); // 瀏覽器自身的高度
        var offsetTop = $img.offset().top;  //目標標籤img相對於document頂部的位置

        if (offsetTop < (scrollTop + windowHeight) && offsetTop > scrollTop) { //在2個臨界狀態之間的就為出現在視野中的
            return true;
        }
        return false;
    }
    function isLoaded ($img) {
        return $img.attr('data-original') === $img.attr('src'); //如果data-src和src相等那麼就是已經載入過了
    }
    function loadImg ($img) {
        $img.attr('src',$img.attr('data-original')); // 載入就是把自定義屬性中存放的真實的src地址賦給src屬性
    }

記錄二

引入外掛:jquery.lazyload.js

<script type="text/javascript" src="static/jquery-3.0.0.min.js"></script>
<script type="text/javascript" src="static/jquery.lazyload.min.js" ></script>  點選下載

<img class="lazy-load" data-original="images/dia_banner.png" alt=""/>

$(function() {
     placeholder : "images/test.jpg",   // placeholder,待圖片載入時,佔位圖則會隱藏
     effect: "fadeIn",  // effect(特效),值有show(直接顯示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
     threshold: 200,  // threshold,值為數字,如設定為200,表示滾動條在離目標位置還有200的高度時就開始載入圖片,
     event: 'click',   // event,載入圖片條件,值有click(點選),mouseover(滑鼠劃過),sporty(運動的),scroll(預設滾動)
     container: $(".home"),  // container,值為某容器.lazyload預設在拉動瀏覽器滾動條時生效,拉動某DIV的滾動條時依次載入圖片
     failurelimit : 10 // failurelimit,值為數字.lazyload預設在找到第一張不在可見區域裡的圖片時則不再繼續載入,但當HTML容器混亂的時候可能出現可見區域內圖片並沒加載出來的情況,failurelimit意在載入N張可見區域外的圖片,以避免出現這個問題.
});

相關推薦

jQuery實現圖片載入方法記錄

記錄一 整體思路: 設定個data-original(自定義一個屬性)來存放真實地址 當滾動頁面時,檢查所有的img標籤,看是否出現在視野中,如果已經出現在了視野中,那繼續再進行判斷,看其是否已經被載入過了,如果還沒有被載入過,那就進行載入。 程式碼: laz

C語言經典演算法(九)——遞迴實現二分查詢的方法

後繼續整理演算法並寫出自己的理解和備註。 C++實現的:遞迴實現二分查詢演算法 1、 遞迴實現二分查詢 <1> 題目描述:針對資料,進行二分查詢(要求:資料的排列有序) <2> 方法一:概念法 <3> 方法二:遞迴法 原始碼: 一、 遞迴實現

VUE實現列印功能的方法

第一種方法:通過npm 安裝外掛   1,安裝  npm install vue-print-nb --save 2,引入  安裝好以後在main.js檔案中引入       &n

如何結合外掛 vue-lazyload 來簡單實現圖片載入

外掛地址:https://www.npmjs.com/package/vue-lazyload; 一、使用場景: 在專案中有很多條數的資訊,且圖片很多的時候,不需要一次把整個頁面的圖片都載入完,而是在滾動到出現在螢幕才去載入該圖片的時候就可以用這個外掛。 二、簡單使用步驟: 1. 在專案裡面 npm

jquery實現省市聯動的方式(xml,,,json)

省市聯動,xml傳值方式 匯入相應的jar 建立表單 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> &

Python實現"各位相"的方法

給定一個非負整數num,重複累加num中的每一個數字直至結果為個位數 Input: 38 Output: 2 Explanation: The process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one di

Java實現變數交換的方法

方法一:引入第三方變數 public class ChangeVar{ public static void main(String[] args){ //交換變數 int a = 1; int b = 2; int c= a; //1 a = b;//2 b

vue-lazyload實現圖片載入的方式

1、安裝vue-lazyload npm install --save vue-lazyload 2、在main.js中引入並申明使用 (1)引入 import VueLazyload from 'vue-lazyload' (2)申明使用 Vue.use(Vue

30行Javascript程式碼實現圖片載入

小編推薦:Fundebug專注於JavaScript、微信小程式、微信小遊戲,Node.js和Java實時BUG監控。真的是一個很好用的bug監控費服務,眾多大佬公司都在使用。 前言 頁面太多圖片?那麼請你花20分鐘去優化一下頁面的效能 講道理,當你為圖片的src賦值時,D

2012-7-20 android 圖片疊加效果——方法

效果圖: 第一種: 第二種: 第一種是通過canvas畫出來的效果: public void first(View v) { // 防止出現Immutable bitmap passed to Canvas constructor錯誤

Python實現“反轉整數”的方法

給定一個32位的符號整數,返回它的反轉整數 Example 1: Input: 123 Output: 321 Example 2: Input: -123 Output: -321 Example 3: Input: 120 Output: 21 假設該整數的

Qt實現環形緩衝區的方法

一個環形buffer,在尾部追加資料,從頭部讀取資料,適合用作IO的緩衝區。 一.使用QList和QByteArray 這個方法參考的是Qt原始碼中的QRingBuffer類,這個類不是Qt API的一部分,所以Qt助手裡是查不到的,它的存在只是為了服務其他的原始碼。 Q

Vue專案中實現圖片載入

---對於圖片過多的頁面,為了加速頁面載入速度,所以很多時候我們需要將頁面內未出現在可視區域內的圖片先不做載入, 等到滾動到可視區域後再去載入。這樣子對於頁面載入效能上會有很大的提升,也提高了使用者體驗

vue中 如何給圖片設定載入 用Vue實現圖片載入

懶載入:首先將圖片的src連結設為同一張圖,並將其真正的圖片地址儲存在img標籤的自定義屬性中。當js監聽到該圖片元素進入可視視窗時,即將自定義屬性中的地址儲存到src屬性中,達到懶載入的效果。 顧名思義,簡單理解就是 當頁面開啟,首先所有資料引進來的圖片先不顯示,所有圖先

JS實現圖片載入外掛

一、前言  我在前幾篇部落格的記錄中,有說自己在做一個圖片懶載入的功能,然後巴拉巴拉的遇到哪些問題,結果做完了也沒對懶載入這個功能做一些記錄,所以這篇文章主要針對我所實現的思路,以及程式碼做個記錄,實現不佳之處還望見諒和指出。 二、實現原理與相關問題 1.做成一個元件還是service?

JAVA 實現AES加密的方法

寫在前面的話:    1.建議加密後將密文轉為16進位制的字串(便於觀看)。    2.以下的兩種加密的方法金鑰不限定長度。[java] view plain copy print?/**  *AES加密解密工具類  *@author M-Y  */  public clas

JqueryjQuery獲取URL引數的方法

jQuery獲取URL引數的關鍵是獲取到URL,然後對URL進行過濾處理,取出引數。location.href是取得URL,location.search是取得URL“?”之後的字串,也就是說引數部

jQuery.imgLazyLoad圖片載入元件

$.extend({ imgLazyLoad: function(options) { var config = { container: 'body', tabItemSelector: '',

淺談jQuery中find()與filter()方法聯絡與區別

首先,這兩種方法都屬於jQuery遍歷函式方法,下面小編將分開淺談一下這兩種方法 find()方法 我們通過W3C手冊瞭解到,find()方法的定義是獲得當前元素集合中每個元素的後代,通過選擇器、j

基於javascript實現圖片載入(適用於pc端與h5)

這篇文章主要介紹了javascript實現圖片懶載入的方法及思路,在實際開發中有時我們需要用懶載入,也就是延遲載入圖片的方式,來提高網站的親和力,需要的朋友可以參考下。 一、定義   圖片延遲載入也稱為懶載入,延遲載入圖片或符合某些條件時才載入某些圖片,通常用於圖片比