首頁 web前端 js教程 基於JS實作圖片懶載入(lazyload)的實例教學

基於JS實作圖片懶載入(lazyload)的實例教學

Jun 15, 2017 pm 01:25 PM
懶加載

圖片懶載入也是比較常見的一種效能優化的方法,本篇文章主要介紹了原生JS實作圖片懶載入(lazyload)實例,這裡整理了詳細的程式碼,有需要的小夥伴可以參考下

前言

圖片懶加載也是比較常見的一種效能優化的方法,最近在用vue做一個新聞列表的客戶端時也用到了,這裡就簡單介紹下實作原理和部分程式碼。

實現原理

載入頁面的時候,圖片一直都是流量大頭,針對圖片的效能方法也挺多的例如base64、雪碧圖等;懶加載也是其中一種,主要原理是將非首屏的圖片src設為一個默認值,然後監聽窗口滾動,當圖片出現在窗口中時再給他賦予真實的圖片地址,這樣可以確保首屏的載入速度然後按需載入圖片。


#特定程式碼

#首先在渲染時,圖片引用預設圖片,然後把真實地址放在data-*屬性上面。


<image src=&#39;./../assets/default.png&#39; :src=&#39;item.allPics&#39; class=&#39;lazyloadimg&#39;>
登入後複製

然後是監聽滾動,直接用window.onscroll就可以了,但是要注意一點的是類似於window的scroll和resize,還有mousemove這類觸發很頻繁的事件,最好用節流(throttle)或防手震函數(debounce)來控制觸發頻率。 underscore和lodash裡面都有封裝這兩個方法,這裡先不多做介紹了。

接著要判斷圖片是否出現在了視窗裡面,主要是三個高度:1,當前body從頂部滾動了多少距離。 2,視窗的高度。 3,目前圖片距離頂部的距離。具體程式碼如下:


window.onscroll =_.throttle(this.watchscroll, 200);
watchscroll () {
  var bodyScrollHeight = document.body.scrollTop;// body滚动高度
  var windowHeight = window.innerHeight;// 视窗高度
  var imgs = document.getElementsByClassName(&#39;lazyloadimg&#39;);
  for (var i =0; i < imgs.length; i++) {
  var imgHeight = imgs[i].offsetTop;// 图片距离顶部高度
  if (imgHeight < windowHeight + bodyScrollHeight) {
   imgs[i].src = imgs[i].getAttribute(&#39;src&#39;);
   img[i].className = img[i].className.replace(&#39;lazyloadimg&#39;,&#39;&#39;)
  }
  }
 }
登入後複製

#結語

大概內容就這麼多了,下次可能會補充一下防抖節流源碼的實現。最後再補充兩個常見的滾動判斷:

1.頁面滾動離開首屏(這時可顯示回到頂部的按鈕):document.body.scrollTop > window. innerHeight

2.頁面捲動到底部了(這時可去調諧介面取得更多內容):window.scrollY + window.innerHeight > document.body.offsetHeight

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

以上是基於JS實作圖片懶載入(lazyload)的實例教學的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Vue3中的lazy函數詳解:懶加載組件提高應用效能 Vue3中的lazy函數詳解:懶加載組件提高應用效能 Jun 19, 2023 am 08:39 AM

Vue3是一款流行的JavaScript框架,它具有易於使用、高效穩定的特點,尤其擅長建立單頁應用程式(SPA)。 Vue3中的lazy函數,作為懶加載組件的利器之一,可以很大程度地提高應用程式的效能。本文將詳解Vue3中的lazy函數的使用方法與原理,以及它在實際開發中的應用場景與優點。什麼是懶加載?在傳統的前後端分離的開發中,前端開發人員往往需要處理大量的

Vue如何實作元件的懶載入和預先載入? Vue如何實作元件的懶載入和預先載入? Jun 27, 2023 pm 03:24 PM

隨著Web應用程式的日益複雜,前端開發人員需要在保證頁面載入速度的前提下更好地提供功能和使用者體驗。這就涉及到Vue組件的懶加載和預加載,它們是優化Vue應用程式效能的重要手段。本文將深入介紹Vue元件的懶載入和預先載入的實作方法。一、什麼是懶加載懶加載就是當用戶需要訪問某個組件時才會把該組件的代碼加載進來,而不是一開始就把所有組件的代碼都加載進來,這樣可以減少

Vue懶載入圖片失敗問題解決方案 Vue懶載入圖片失敗問題解決方案 Jun 29, 2023 pm 10:42 PM

Vue開發中如何解決圖片懶載入失敗的問題懶載入(LazyLoad)是現代Web開發中常用的最佳化技術之一,特別在載入大量圖片和資源時,可以有效減輕頁面的負擔,提升使用者體驗。然而,在使用Vue框架進行開發時,有時候我們可能會遇到圖片懶載入失敗的問題。本文將介紹一些常見的問題和解決方案,以便開發者能夠更好地應對這個問題。圖片資源路徑錯誤首先,我們需要確保圖片資源

PHP數組分頁中如何實現懶加載? PHP數組分頁中如何實現懶加載? May 03, 2024 am 08:51 AM

PHP數組分頁時實作懶載入的方法是:使用迭代器只載入資料集的一個元素。建立一個ArrayPaginator對象,指定陣列和頁面大小。在foreach循環中迭代對象,每次載入和處理下一頁資料。優點:分頁效能提升、記憶體消耗減少、按需載入支援。

懶加載的方式有哪些 懶加載的方式有哪些 Nov 13, 2023 pm 03:14 PM

懶加載的方式有圖片懶載入、影片懶載入、腳本檔案懶載入和資料懶載入等。詳細介紹:1、圖片懶加載,是一種常見的懶加載實現方式,在頁面加載時,只加載可視區域的圖片,其他區域的圖片則以佔位符的形式呈現,當用戶滾動頁面到圖片位置時,才載入真正的圖片,圖片懶載入可以透過使用現有的JavaScript庫或自訂程式碼實現;2、影片懶載入的實作方式與圖片懶載入類似,在頁面載入時等等。

懶載入延遲載入什麼意思 懶載入延遲載入什麼意思 Nov 20, 2023 pm 02:12 PM

懶加載是一種程式設計模式,指的是在需要時才加載數據,而不是在對像初始化或加載時就立即獲取數據的策略,懶加載的目的是為了延遲數據的加載,以節省系統資源和提高性能。

使用C# Lazy 實作延遲載入的方法 使用C# Lazy 實作延遲載入的方法 Feb 19, 2024 am 09:42 AM

C#如何使用Lazy實現懶加載,需要具體程式碼範例在軟體開發中,懶加載(Lazyloading)是一種延遲加載的技術,它可以幫助我們提高程式的效能和資源利用效率。在C#中,我們可以使用Lazy類別來實現懶加載的功能。本文將介紹Lazy類別的基本概念以及如何使用它來實現懶加載,同時提供具體的程式碼範例。首先,我們要先了解Lazy

Vue技術開發中如何處理圖片資源的懶加載和預加載 Vue技術開發中如何處理圖片資源的懶加載和預加載 Oct 09, 2023 am 09:45 AM

Vue技術開發中如何處理圖片資源的懶加載和預加載隨著網頁內容的豐富化,圖片已經成為網頁中必不可少的一部分。然而,大量的圖片資源載入可能會導致網頁載入速度變慢,影響使用者的體驗。為了解決這個問題,我們可以使用圖片資源的懶加載和預先載入技術來優化使用者體驗。一、懶加載技術懶加載是指網頁中的圖片在初次加載時只加載可視區域內的圖片,當用戶滾動頁面到達圖片所在區域時再加載圖

See all articles