首頁 web前端 css教學 滾動懶惰的提示

滾動懶惰的提示

Apr 19, 2025 am 09:44 AM

高效實現網頁圖片懶加載:兼顧響應式和性能

您是否也曾為了優化網頁性能而考慮過圖片懶加載?懶加載技術能夠有效減少初始頁面加載重量,提升網頁加載速度。本文將深入探討一種高效的圖片懶加載實現方法,同時兼顧響應式圖片和最佳用戶體驗。

Tips for rolling your own lazy loading

懶加載並非瀏覽器原生功能,目前需要藉助JavaScript實現。雖然Chrome 75及後續版本計劃原生支持圖片和iframe的懶加載,但為了兼容其他瀏覽器,我們仍需使用JavaScript方案。許多靜態網站生成器、庫和框架提供了開箱即用的懶加載功能,但引入完整的庫或框架只為實現此功能可能會造成性能開銷。因此,我們選擇自行實現懶加載。

核心機制:

大多數懶加載方法遵循以下模式:

  1. HTML標記:使用<img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174502705448368.jpg" class="lazy" alt="Tips for rolling your own lazy loading">

  2. 加載時機:使用Intersection Observer API 檢測圖片是否進入視口。 Intersection Observer提供高效的元素可見性檢測,避免了頻繁的scrollresize事件監聽。

 // 創建Intersection Observer
const observer = new IntersectionObserver(lazyLoad, {
  rootMargin: '100px',
  threshold: 1.0
});

function lazyLoad(elements) {
  elements.forEach(image => {
    if (image.intersectionRatio > 0) {
      image.src = image.dataset.src;
      observer.unobserve(image);
    }
  });
}

// 觀察所有帶有"lazy" 類的img 元素const lazyImages = document.querySelectorAll('img.lazy');
lazyImages.forEach(img => {
  observer.observe(img);
});
登入後複製

改進與優化:

上述基本方法存在一些不足:

  1. JavaScript依賴:在JavaScript加載並執行前,圖片無法顯示。
  2. 視覺跳動:圖片加載前頁面空白,可能造成視覺不流暢。

針對以上問題,我們進行如下改進:

  1. 原生懶加載檢測:使用特性檢測判斷瀏覽器是否支持原生loading="lazy"屬性,支持則直接使用,無需JavaScript干預。
 if ('loading' in HTMLImageElement.prototype) {
  document.querySelectorAll('img.lazy').forEach(img => img.src = img.dataset.src);
} else {
  // 使用Intersection Observer 實現懶加載}
登入後複製
  1. 佔位圖和CSS過渡:使用小尺寸的佔位圖作為初始狀態,並用CSS進行縮放和模糊處理,在圖片加載完成後移除模糊效果,實現平滑過渡。
<picture>
  <img src="/static/imghw/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174502705554652.jpg" class="lazy" alt="Tips for rolling your own lazy loading">
</picture>
登入後複製
picture { width: 100%; overflow: hidden; }
picture img { width: 100%; transition: filter 0.5s; }
picture.lazy img { filter: blur(20px); }
登入後複製
  1. 響應式圖片:使用<picture></picture>元素和<source></source>元素實現響應式圖片,根據不同視口大小加載不同尺寸的圖片。

輔助工具:

為了簡化開發流程,我們可以使用以下輔助工具:

  1. HTML生成器:自定義函數或模板引擎輔助生成<picture></picture>元素的HTML代碼。

  2. 圖片批量處理:使用gulp-image-resize等工具批量生成不同尺寸的圖片,或使用雲服務(如Netlify、Cloudinary)進行按需圖片轉換。

總結:

本文介紹了一種高效的圖片懶加載實現方法,通過結合原生懶加載特性檢測、佔位圖、CSS過渡、響應式圖片和輔助工具,能夠在保證性能的同時提升用戶體驗。 選擇合適的圖片處理方式(構建時或按需轉換)取決於項目規模和需求。 此方法能夠顯著提升網頁加載速度,並提供更流暢的視覺效果。

以上是滾動懶惰的提示的詳細內容。更多資訊請關注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

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

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

熱門話題

Java教學
1676
14
CakePHP 教程
1429
52
Laravel 教程
1333
25
PHP教程
1278
29
C# 教程
1257
24
靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom 每周平台新聞:HTML加載屬性,主要的ARIA規格以及從iframe轉移到Shadow dom Apr 17, 2025 am 10:55 AM

在本週的平台新聞綜述中,Chrome引入了一個用於加載的新屬性,Web開發人員的可訪問性規範以及BBC Move

帶有HTML對話框元素的一些動手 帶有HTML對話框元素的一些動手 Apr 16, 2025 am 11:33 AM

這是我第一次查看HTML元素。我已經意識到了一段時間,但是尚未將其旋轉。它很酷,

紙張形式 紙張形式 Apr 16, 2025 am 11:24 AM

購買或建造是技術的經典辯論。自己構建東西可能會感覺更便宜,因為您的信用卡賬單上沒有訂單項,但是

'訂閱播客”鏈接應在哪裡? '訂閱播客”鏈接應在哪裡? Apr 16, 2025 pm 12:04 PM

有一段時間,iTunes是播客中的大狗,因此,如果您將“訂閱播客”鏈接到喜歡:

託管您自己的非JavaScript分析的選項 託管您自己的非JavaScript分析的選項 Apr 15, 2025 am 11:09 AM

有很多分析平台可幫助您跟踪網站上的訪問者和使用數據。也許最著名的是Google Analytics(廣泛使用)

See all articles