如何?lazyload的圖片消極式載入功能(1/2)

來源:互聯網
上載者:User

如何?lazyload的圖片消極式載入功能
lazyload的痛點在如何在適當的時候載入使用者需要的資源(這裡使用者需要的資源指該資源呈現在瀏覽器可視地區)。因此我們需要知道幾點資訊來確定目標是否已呈現在客戶區,其中包括:
     1.可視地區相對於瀏覽器頂端位置
     2.待載入資源相對於瀏覽器頂端位置.

   在得到以上兩點資料後,通過如下函數,便可得出某對象是否在瀏覽器可視地區了.
    //返回瀏覽器的可視地區位置
   

function getclient(){
       var l,t,w,h;
       l  =  document.documentelement.scrollleft || document.body.scrollleft;
       t  =  document.documentelement.scrolltop || document.body.scrolltop;
       w =   document.documentelement.clientwidth;
       h =   document.documentelement.clientheight;
       return {'left':l,'top':t,'width':w,'height':h} ;
    }

    //返回待

載入資源位置
   

function getsubclient(p){
       var l = 0,t = 0,w,h;
       w = p.offsetwidth ;
       h = p.offsetheight;

       while(p.offsetparent){
        l += p.offsetleft ;
        t += p.offsettop ;
        p = p.offsetparent;
     }

     return {'left':l,'top':t,'width':w,'height':h } ;
  }

    其中 函數 getclient()返回瀏覽器客戶區地區資訊,getsubclient()返回目標模組地區資訊。此時確定目標模組是否出現在客戶區實際上是確定如上兩個矩形是否相交.

    //判斷兩個矩形是否相交,返回一個布爾值
   

function intens(rec1,rec2){
       var lc1,lc2,tc1,tc2,w1,h1;
       lc1 = rec1.left + rec1.width / 2;
       lc2 = rec2.left + rec2.width / 2;
       tc1 = rec1.top + rec1.height / 2 ;
       tc2 = rec2.top + rec2.height / 2 ;
       w1 = (rec1.width + rec2.width) / 2 ;
       h1 = (rec1.height + rec2.height) / 2;
       return math.abs(lc1 - lc2) < w1 && math.abs(tc1 - tc2) < h1 ;
    }

首頁 1 2 末頁

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.