Efficiently implement lazy loading of web page images: taking into account both responsiveness and performance
Have you ever considered lazy loading of images to optimize web page performance? Lazy loading technology can effectively reduce the load weight of the initial page and improve the loading speed of the web page. This article will explore an efficient image lazy loading method, while taking into account responsive images and the best user experience.

Lazy loading is not a browser native function, and it currently needs to be implemented with the help of JavaScript. Although Chrome 75 and subsequent versions plan to natively support lazy loading of images and iframes, we still need to use JavaScript solutions in order to be compatible with other browsers. Many static website generators, libraries, and frameworks provide lazy loading capabilities out of the box, but introducing a full library or framework just to implement this functionality can cause performance overhead. Therefore, we chose to implement lazy loading by ourselves.
Core mechanism:
Most lazy loading methods follow the following pattern:
HTML tags: Use
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174502705448368.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="Tips for rolling your own lazy loading">Loading time: Use
Intersection ObserverAPI to detect whether the image enters the viewport.Intersection Observerprovides efficient element visibility detection, avoiding frequentscrollandresizeevent listening.
// Create 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);
}
});
}
// Observe all img elements with "lazy" class const lazyImages = document.querySelectorAll('img.lazy');
lazyImages.forEach(img => {
observer.observe(img);
});
Improvement and optimization:
There are some shortcomings in the above basic methods:
- JavaScript dependency: The image cannot be displayed until JavaScript is loaded and executed.
- Visual beating: The page is blank before the picture is loaded, which may cause visual dissatisfaction.
In response to the above issues, we have made the following improvements:
- Native lazy load detection: Use feature detection to determine whether the browser supports the native
loading="lazy"attribute. If supported, use it directly without JavaScript intervention.
if ('loading' in HTMLImageElement.prototype) {
document.querySelectorAll('img.lazy').forEach(img => img.src = img.dataset.src);
} else {
// Use Intersection Observer to implement lazy loading}
- Placeholder map and CSS transition: Use a small-size placeholder map as the initial state, and use CSS to scale and blur, remove the blur effect after the image is loaded to achieve a smooth transition.
<picture> <img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/174502705554652.jpg?x-oss-process=image/resize,p_40" 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); }
- Responsive picture: Use
<picture></picture>Elements and<source></source>Elements implement responsive pictures, loading pictures of different sizes according to different viewport sizes.
Auxiliary tools:
To simplify the development process, we can use the following auxiliary tools:
HTML generator: custom function or template engine assisted in generation
<picture></picture>HTML code for the element.Image batch processing: Use tools such as
gulp-image-resizeto batch generate pictures of different sizes, or use cloud services (such as Netlify and Cloudinary) to convert pictures on demand.
Summarize:
This article introduces an efficient image lazy loading implementation method. By combining native lazy loading feature detection, placeholder map, CSS transition, responsive pictures and auxiliary tools, it can improve the user experience while ensuring performance. Choosing the right image processing method (build or on-demand conversion) depends on the project size and requirements. This method can significantly improve web page loading speed and provide smoother visual effects.
The above is the detailed content of Tips for rolling your own lazy loading. For more information, please follow other related articles on the PHP Chinese website!
A Little Reminder That Pseudo Elements are Children, Kinda.Apr 19, 2025 am 11:39 AMHere's a container with some child elements:
Menus with 'Dynamic Hit Areas'Apr 19, 2025 am 11:37 AMFlyout menus! The second you need to implement a menu that uses a hover event to display more menu items, you're in tricky territory. For one, they should
Improving Video Accessibility with WebVTTApr 19, 2025 am 11:27 AM"The power of the Web is in its universality. Access by everyone regardless of disability is an essential aspect."- Tim Berners-Lee
Weekly Platform News: CSS ::marker pseudo-element, pre-rendering web components, adding Webmention to your siteApr 19, 2025 am 11:25 AMIn this week's roundup: datepickers are giving keyboard users headaches, a new web component compiler that helps fight FOUC, we finally get our hands on styling list item markers, and four steps to getting webmentions on your site.
Making width and flexible items play nice togetherApr 19, 2025 am 11:23 AMThe short answer: flex-shrink and flex-basis are probably what you’re lookin’ for.
Weekly Platform News: HTML Inspection in Search Console, Global Scope of Scripts, Babel env Adds defaults QueryApr 19, 2025 am 11:18 AMIn this week's look around the world of web platform news, Google Search Console makes it easier to view crawled markup, we learn that custom properties
IndieWeb and WebmentionsApr 19, 2025 am 11:16 AMThe IndieWeb is a thing! They've got a conference coming up and everything. The New Yorker is even writing about it:


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

SublimeText3 Linux new version
SublimeText3 Linux latest version

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.







