图片延时加载(Lazy Loading)是一种优化网页性能的技术,它通过延迟加载页面上非关键资源(如图片),直到这些资源即将进入用户的视野范围。这样可以减少初始页面加载时间,提高用户体验。
以下是使用JavaScript实现图片延时加载的示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Lazy Load Images</title>
<style>
img {
width: 100%;
height: auto;
display: block;
margin-bottom: 10px;
opacity: 0;
transition: opacity 0.5s;
}
img.loaded {
opacity: 1;
}
</style>
</head>
<body>
<div class="image-container">
<img data-src="image1.jpg" alt="Image 1">
<img data-src="image2.jpg" alt="Image 2">
<!-- 更多图片 -->
</div>
<script>
document.addEventListener("DOMContentLoaded", function() {
const images = document.querySelectorAll('img[data-src]');
const observer = new IntersectionObserver((entries, observer) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
const img = entry.target;
img.src = img.dataset.src;
img.onload = () => img.classList.add('loaded');
observer.unobserve(img);
}
});
}, { threshold: 0.1 });
images.forEach(img => observer.observe(img));
});
</script>
</body>
</html>
原因:可能是data-src
属性未正确设置,或者Intersection Observer API不被浏览器支持。
解决方法:
data-src
属性。原因:图片在加载完成后突然显示,造成视觉上的不流畅。 解决方法:
opacity
属性。原因:大量图片同时进入视口时,可能导致浏览器卡顿。 解决方法:
threshold
值,控制图片加载的时机。通过以上方法,可以有效实现图片延时加载,并解决常见的实现问题。
领取专属 10元无门槛券
手把手带您无忧上云