欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 网页页面延迟加载方案(提高页面的初始加载速度)

网页页面延迟加载方案(提高页面的初始加载速度)

2025/12/16 17:41:30 来源:https://blog.csdn.net/2301_79858914/article/details/141831612  浏览:    关键词:网页页面延迟加载方案(提高页面的初始加载速度)

当用户滚动到页面的某个部分时才加载相关图片的技术称为“延迟加载”(Lazy Loading)。这可以通过多种方式实现,以下是一些常见的方法:

1. 使用loading="lazy"属性(原生支持)

现代浏览器原生支持图片和iframe的延迟加载,通过在<img>标签中添加loading="lazy"属性,可以简单高效地实现延迟加载。

<img src="image.jpg" alt="example image" loading="lazy">

2. 使用Intersection Observer API

对于需要更复杂控制或在不支持loading="lazy"的浏览器中使用的场景,可以使用JavaScript中的Intersection Observer API。这是一种比较现代的方式,性能优越,可以监控元素是否进入视口(viewport)。

示例代码:

<img data-src="image.jpg" alt="example image" class="lazy"><script>// 检查浏览器是否支持Intersection Observerif ('IntersectionObserver' in window) {const lazyImages = document.querySelectorAll('img.lazy');const imageObserver = new IntersectionObserver((entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {//isIntersecting表示目标元素是否与视口交叉 true表示与视口交叉,说明元素已经进入视口const img = entry.target;//事件源对象:也就是进入视口的元素img.src = img.dataset.src;//开始加载图片资源img.classList.remove('lazy');//图片加载完成,移除类名observer.unobserve(img); // 停止观察已加载的图片}});});//在调用 observe 方法之前,必须确保 IntersectionObserver 实例(imageObserver)已经正确创建并设置好回调函数。否则,可能会错过目标元素的交叉状态变化,因为观察器未准备好处理这些变化lazyImages.forEach(img => {imageObserver.observe(img);});} else {// 如果浏览器不支持Intersection Observer,可以使用其他的降级方案,比如立即加载图片const lazyImages = document.querySelectorAll('img.lazy');lazyImages.forEach(img => {img.src = img.dataset.src;});}
</script>

3. 使用JavaScript库

如果你不想自己实现或者需要更多功能,可以使用现成的JavaScript库,如 lazysizes。

使用lazysizes的示例:

<!-- 在HTML中引用lazysizes库 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/lazysizes/5.3.2/lazysizes.min.js" async></script><!-- 将图片的src替换为data-src,并添加`lazyload`类 -->
<img data-src="image.jpg" alt="example image" class="lazyload">

lazysizes库会自动处理图片的延迟加载,使用起来非常方便,且功能强大,支持自定义配置、事件回调等。

4. CSS背景图的延迟加载

如果你需要延迟加载背景图片,可以在元素接近视口时动态添加CSS类或者直接使用JavaScript设置background-image

示例代码:

<div class="lazy-background" data-bg="background.jpg"></div><script>const lazyBackgrounds = document.querySelectorAll('.lazy-background');const backgroundObserver = new IntersectionObserver((entries, observer) => {entries.forEach(entry => {if (entry.isIntersecting) {entry.target.style.backgroundImage = `url(${entry.target.dataset.bg})`;observer.unobserve(entry.target);}});});lazyBackgrounds.forEach(bg => {backgroundObserver.observe(bg);});
</script>

总结

延迟加载图片是提升页面性能的有效手段,特别是在包含大量图片的页面中。通过使用现代浏览器支持的原生loading="lazy"属性、Intersection Observer API、或现成的JavaScript库,可以轻松实现这一功能,从而优化页面加载速度和用户体验。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词