Building Your Learning Module...
Getting things ready for you!
Find videos you like?
Save to resource drawer for future reference!
While basic lazy loading with loading="lazy" is simple, advanced lazy loading gives you complete control over when and how content loads using JavaScript.
Image Loaded
Not Loaded Yet
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Basic Lazy Loading</title>
</head>
<body>
<h1 style="text-align: center; color: #2563eb;">Image Gallery with Lazy Loading</h1>
<div class="gallery">
<img src="https://picsum.photos/300/200?random=1"
alt="Image 1"
loading="lazy"
class="placeholder">
<img src="https://picsum.photos/300/200?random=2"
alt="Image 2"
loading="lazy"
class="placeholder">
<img src="https://picsum.photos/300/200?random=3"
alt="Image 3"
loading="lazy"
class="placeholder">
<img src="https://picsum.photos/300/200?random=4"
alt="Image 4"
loading="lazy"
class="placeholder">
</div>
</body>
</html>Loading preview...
loading="lazy" attribute<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Intersection Observer Lazy Loading</title>
</head>
<body>
<div class="container">
<h1 style="text-align: center; color: #2563eb;">Scroll to Load Content</h1>
<div class="card lazy-load" data-src="https://picsum.photos/800/200?random=1">
<div class="skeleton"></div>
<img alt="Lazy loaded image 1">
<h2>Card 1</h2>
<p>This content loads when you scroll to it!</p>
</div>
<div class="card lazy-load" data-src="https://picsum.photos/800/200?random=2">
<div class="skeleton"></div>
<img alt="Lazy loaded image 2">
<h2>Card 2</h2>
<p>Using Intersection Observer API for better performance.</p>
</div>
<div class="card lazy-load" data-src="https://picsum.photos/800/200?random=3">
<div class="skeleton"></div>
<img alt="Lazy loaded image 3">
<h2>Card 3</h2>
<p>Images load only when needed!</p>
</div>
<div class="card lazy-load" data-src="https://picsum.photos/800/200?random=4">
<div class="skeleton"></div>
<img alt="Lazy loaded image 4">
<h2>Card 4</h2>
<p>Save bandwidth and improve performance.</p>
</div>
</div>
</body>
</html>Loading preview...
threshold: 0.1 - Trigger when 10% visiblerootMargin: '50px' - Start loading 50px before visible<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Progressive Lazy Loading</title>
</head>
<body>
<div class="container">
<h1>✨ Progressive Image Loading</h1>
<div class="grid">
<div class="image-wrapper" data-src="https://picsum.photos/600/400?random=1">
<img class="blur-placeholder"
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300'%3E%3Crect fill='%23ddd' width='400' height='300'/%3E%3C/svg%3E"
alt="placeholder">
<img class="full-image" alt="Image 1">
<div class="loading-badge">Loading...</div>
<div class="image-label">Mountain View</div>
</div>
<div class="image-wrapper" data-src="https://picsum.photos/600/400?random=2">
<img class="blur-placeholder"
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300'%3E%3Crect fill='%23ddd' width='400' height='300'/%3E%3C/svg%3E"
alt="placeholder">
<img class="full-image" alt="Image 2">
<div class="loading-badge">Loading...</div>
<div class="image-label">Ocean Sunset</div>
</div>
<div class="image-wrapper" data-src="https://picsum.photos/600/400?random=3">
<img class="blur-placeholder"
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300'%3E%3Crect fill='%23ddd' width='400' height='300'/%3E%3C/svg%3E"
alt="placeholder">
<img class="full-image" alt="Image 3">
<div class="loading-badge">Loading...</div>
<div class="image-label">Forest Path</div>
</div>
<div class="image-wrapper" data-src="https://picsum.photos/600/400?random=4">
<img class="blur-placeholder"
src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 300'%3E%3Crect fill='%23ddd' width='400' height='300'/%3E%3C/svg%3E"
alt="placeholder">
<img class="full-image" alt="Image 4">
<div class="loading-badge">Loading...</div>
<div class="image-label">City Lights</div>
</div>
</div>
</div>
</body>
</html>Loading preview...
rootMargin to start loading before visible