CSS延迟图片加载(Lazy Loading)是一种优化网页性能的技术,它通过延迟加载非首屏图片,减少初始页面加载时间,从而提升用户体验。这种技术通常结合JavaScript来实现,但也可以通过纯CSS实现简单的延迟加载效果。
content-visibility
属性和will-change
属性来实现简单的延迟加载效果。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Lazy Loading</title>
<style>
.lazy-image {
width: 100%;
height: 300px;
background-color: #f0f0f0;
content-visibility: auto;
will-change: transform;
}
.lazy-image img {
width: 100%;
height: auto;
opacity: 0;
transition: opacity 0.5s;
}
.lazy-image img.loaded {
opacity: 1;
}
</style>
</head>
<body>
<div class="lazy-image">
<img data-src="image1.jpg" alt="Image 1">
</div>
<div class="lazy-image">
<img data-src="image2.jpg" alt="Image 2">
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
const images = document.querySelectorAll('.lazy-image img');
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
img.classList.add('loaded');
observer.unobserve(img);
}
});
}, { threshold: 0.1 });
images.forEach(img => {
observer.observe(img);
});
});
</script>
</body>
</html>
IntersectionObserver
的配置参数来解决。opacity
过渡效果来平滑显示。IntersectionObserver
API。可以通过Polyfill来解决兼容性问题。通过以上方法,可以有效实现CSS延迟图片加载效果,提升网页性能和用户体验。
领取专属 10元无门槛券
手把手带您无忧上云