图片延迟加载(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;
}
</style>
</head>
<body>
<div id="image-container">
<!-- 图片占位符 -->
<img src="placeholder.jpg" data-src="real-image1.jpg" alt="Image 1">
<img src="placeholder.jpg" data-src="real-image2.jpg" alt="Image 2">
<img src="placeholder.jpg" data-src="real-image3.jpg" alt="Image 3">
<!-- 更多图片... -->
</div>
<script>
function lazyLoadImages() {
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;
observer.unobserve(img);
}
});
}, { threshold: 0.1 });
images.forEach(img => {
observer.observe(img);
});
}
window.addEventListener('DOMContentLoaded', lazyLoadImages);
</script>
</body>
</html>
原因:可能是IntersectionObserver
未正确初始化或图片元素未正确选择。
解决方法:
IntersectionObserver
在DOM加载完成后初始化。data-src
属性。原因:图片在进入可视区域前后的加载状态不一致。
解决方法:
原因:某些旧版浏览器不支持IntersectionObserver
。
解决方法:
IntersectionObserver
的浏览器。通过以上方法,可以有效实现图片延迟加载,并解决常见的问题。
领取专属 10元无门槛券
手把手带您无忧上云