首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js图片的延迟加载

一、基础概念

  1. 定义
    • 图片的延迟加载(Lazy Loading)是一种优化网页性能的技术。在初始页面加载时,不立即加载所有图片,而是等到图片即将进入浏览器的可视区域(通常是视口)时才加载它们。
  • 原理
    • 主要基于监听滚动事件或者利用浏览器提供的Intersection Observer API来确定图片是否即将显示给用户。当图片进入预定义的可视区域范围时,再将图片的真实源(src属性)替换为预先准备好的占位符(例如低分辨率图片或者空白图片)对应的真实图片地址,从而触发浏览器加载图片。

二、相关优势

  1. 提高页面加载速度
    • 减少了初始页面加载时需要下载的资源量。特别是对于包含大量图片的网页,如图片画廊、新闻网站等,可以显著缩短首次加载时间,提升用户体验。
  • 节省带宽
    • 避免加载用户可能看不到的图片,对于移动设备用户或者网络带宽有限的用户来说,可以减少不必要的流量消耗。
  • 优化服务器资源利用
    • 服务器不需要一次性发送所有图片资源,降低了服务器的负载压力。

三、类型

  1. 基于滚动事件监听的延迟加载
    • 这种方式通过JavaScript不断监听窗口的滚动事件,计算每个图片元素相对于视口的位置。当图片进入可视区域时加载图片。但是这种方式可能会因为频繁触发滚动事件而导致性能问题,需要进行节流(throttle)或者防抖(debounce)处理。
    • 示例代码:
    • 示例代码:
  • 基于Intersection Observer API的延迟加载
    • 这是一种更现代、高效的方式。它创建一个观察者对象,指定要观察的目标元素(图片)和一个回调函数。当目标元素的可视状态发生变化(进入或离开可视区域)时,回调函数会被调用。
    • 示例代码:
    • 示例代码:

四、应用场景

  1. 长页面
    • 如电商产品列表页面,有很多产品图片,延迟加载可以让页面快速显示部分内容,用户滚动时再加载更多图片。
  • 移动应用中的图片展示
    • 在移动端的新闻阅读、社交类应用中,图片延迟加载可以提高应用的启动速度和响应速度,节省用户流量。

五、可能遇到的问题及解决方法

  1. 图片闪烁问题
    • 原因:当图片进入可视区域加载时,可能会因为网络延迟等因素导致图片加载完成后重新布局,产生闪烁现象。
    • 解决方法:可以使用CSS设置图片的占位符大小与真实图片大小一致,或者使用渐进式加载技术,先显示低分辨率图片再替换为高分辨率图片。
  • 兼容性问题
    • 原因:Intersection Observer API在一些旧版本的浏览器中不被支持。
    • 解决方法:对于不支持的浏览器,可以回退到基于滚动事件监听的延迟加载方式,可以使用polyfill库来增加兼容性。
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

lazyload.js实现图片异步延迟加载

所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...看看你有没有这JavaScript 所谓图片异步加载,意思是不用一次把图片全部加载完,你可以叫它延迟加载,缓冲加载都行。...站点的页面载入速度; 不唐突的图片渐显方式; 代码精简,便于操作维护,JS代码仅仅 1.6KB 先决条件是:你的站加载了 Jquery.js 原理: 这个特效是少有的即华丽又加速的效果,因为它能判断访客是不是在查看当前图片...,若非则加载预留的填充图片 grey.gif ,等到访客滑动鼠标滑轮或浏览到图片位置时,真正的图片地址才会加载。...不用担心对访客的友好程度,这个效果会在图片即将被浏览到的时候就开始加载图片; 实现方法: 下载 jquery.lazyload.js      下载 预填充图片 fill.gif 点此打包下载

12.8K20
  • WordPress图片延迟加载(懒加载)

    如果不进行设置的话,一个页面会一次性加载所有的资源数据,考虑到不可能所有访客会全部将页面看完,也会导致流量的浪费,加载体验上有待提升。这里就采用延迟加载的方案。...延迟加载也称懒加载,前端实现的方式多种多样,可以通过css的属性设为display none,进入到view的图片再改为inline,inlineblock。...或者在img的src attribute的位置留空,在data-src上填写实际的图片地址,这样浏览器在打开页面的时候就不会主动载入这些图片,设置在进入页面或快进入页面之前再进行加载。...在插件设置界面可以选择延迟加载的内容,如:文本、小部件、缩略图、头像、图片、子窗口。 如果只想针对图片的话,只需要启动lazy load images即可。...如想要指定某些图片不不需要延迟加载,在图片标签上加入标记类名即可。 Post Views: 293

    2.5K30

    利用Jquery Lazyload JS插件实现网页图片延迟加载

    Jquery Lazyload是一款网页图片延迟加载JS插件,本文介绍该JS的使用方法。...,只有滚动或下拉浏览器才会加载底部的图片2.初始化属性使用jquery lazyload需要进行初始化才能生效延迟加载效果。...base64图片,实现替换默认的加载图片。...如果希望连隐藏的图片一起加载,则可以把 skip_invisible 设为 false .8, appear: 默认值 nullappear: 用于在图片加载之前到显示图片之间的处理函数,一般用于展示加载动画...此图片用来占据将要加载的图片的位置, 待图片加载时, 占位图则会隐藏接下来的两个是兼容低版本的属性, 在该版本中正常使用.11, effectspeed : 毫秒数effectspeed: 用于控制动画的速度

    8.5K71

    延迟加载图片的 jQuery 插件:Lazy Load

    网站的速度非常重要,现在有很多网站优化的工具,如 Google 的 Page Speed,Yahoo 的 YSlow,对于网页图片,Yahoo 还提供 Smush.it 这个工具对图片进行批量压缩,但是对于图片非常多的网站...,载入网页还是需要比较长的时间,这个时候我们可以使用 Lazy Load 这个 jQuery 插件来延迟加载图片。...Lazy loader 是一个延迟加载图片的 jQuery 插件,在一些图片非常多的网站中非常有用,在在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置才加载,这样对于含有很多图片的比较长的网页来说...,可以加载的更快,并且还能节省服务器带宽。...Lazy Loader 使用也非常简单,首先确保你的页面已经加载 jQuery Javascript 库,然后在加载 Lazy Load 的 Javascript 文件: js

    1.9K40

    lazyload图片延迟加载 适用所有类型

    关于lazyload图片延迟加载简单介绍 LazyLoad大家再熟悉不 过的一个jquery插件了,它可以延迟加载长页面中的图片....也就是说在浏览器可视区域外的图片不会被载入,直到用户将页面滚动到它们所在的位置才会加载并显示出来,这和图片预加载的处理方式正好刚好相反。...因此,比较流行的wordpress主题,typecho主题,emlog主题等都使用了lazyload图片延迟加载来实现快速加载页面。...在上述代码中,img是延迟加载所有图片,这里你可以根据不同模板作相应改动。...比如我现在使用的大前端主题,可以改成.container img,这样更改后,只延迟加载.container容器内的图片,否则主题侧边的头像和协议图片也跟着延迟加载,等最后才加载出来。

    1.1K10

    基于jQuery或Zepto的图片延迟加载插件

    当我们网站的页面图片过多时,加载速度就会很慢。尤其是用手机2G/3G访问页面,不仅页面慢,而且还会用掉很多流量。...我们主题之前也都采用了图片的懒加载形式,但都不完美,部分主题还采用了占位图片来控制懒加载,今天换一种js图片懒加载,它原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有图片在可视区域才去请求加载...实现原理 页面打开时首先会加载src里的图片,即很小的加载图;通过监听scroll...事件,当图片在可视区域时,使用data-src替换src,加载真正的图片。...--lazyload.js默认懒加载原图片属性是data-original--><img class="lazy" src="loading.png" data-original="img/example.jpg

    3.2K20

    第七节图片延迟加载

    图片延迟加载/图片懒加载的作用:保证页面打开的速度(3s之后如果首页打不开被称为死亡页面) 原理: 1>对于首屏内容中的图片:首先给对应的区域一张默认图片占着位置(默认图需要非常的小,一般可以维持在5kb...以内) 当首屏内容都加载完成后(或者也可以给一个延迟的时间),再开始加载真实的图片 2>对于其它屏中的图片:也是给一张默认的图片占位,当滚动条滚动到对应区域的时候,我们再开始加载真实的图片 网站性能优化的几种方式...: 尽量减少向服务器请求的次数(减少http请求) css/js文件进行合并 icon图片也进行合并--->雪碧图 图片的延迟加载 数据的异步加载 在移动端,如果我做的是一个简单的宣传页,尽量的把css...和js写好内嵌式 首屏延迟加载: 如果获取的图片地址是错误的当赋值给img的src属性的时候不仅控制台会报错,而且页面中会出现碎图或叉图,所以我们获取图片的地址之后要验证地址的有效性,是有效的才赋值...oimgFir.style.display = 'block'; oimg = null; }; }, 500); 其他屏单张图片延迟加载

    79510

    【春节日更】JS延迟加载的几种方式

    面试中,经常被问到: “JS延迟加载的几种方式” 今天,我们就来分享下JS延迟加载的方式 JS延迟加载,也就是等页面加载完成之后再加载 JavaScript 文件。...JS延迟加载有助于提高页面加载速度。...一般有以下几种方式: defer 属性 async 属性 动态创建DOM方式 使用jQuery的getScript方法 使用setTimeout延迟方法 让js最后加载 1. defer...HTML5规范要求脚本按照它们出现的先后顺序执行。在现实当中,延迟脚本并不一定会按照顺序执行。 defer属性只适用于外部脚本文件。支持 HTML5 的实现会忽略嵌入脚本设置的 defer属性。...使用setTimeout延迟方法 6.让JS最后加载 把js外部引入的文件放到页面底部,来让js最后引入,从而加快页面加载速度 参考: https://blog.csdn.net/meijory/article

    1.9K30

    JS图片预加载插件

    在开发H5项目中有时候会遇到要加载大量图片的情况,利用预加载技术可以提高用户浏览时的体验。  ...1)概念: 懒加载也叫延迟加载:JS图片延迟加载,延迟加载图片或符合某些条件时才加载某些图片。 预加载:提前加载图片,当用户需要查看时可直接从本地缓存中渲染。...2)区别: 两种技术的本质:两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。懒加载对服务器前端有一定的缓解压力作用,预加载则会增加服务器前端压力。...服务器端区别:懒加载的主要目的是作为服务器前端的优化,减少请求数或延迟请求数。预加载可以说是牺牲服务器前端性能,换取更好的用户体验,这样可以使用户的操作得到最快的反映。 例子: 加载的图片 $.preload(imgs, { //每张图片加载(load事件)一次触发一次each() each

    16.8K50

    js基础_2(页面加载和延迟脚本)

    js标签的位置: 通常都是把关于标签放在元素中 目的:把所有外部文件css文件和javascript文件件的引用都放在相同的地方,但是 中包含js文件,只有js代码全部 下载完成后才会载入页面,但这无疑是延迟呈现页面,在延迟期间页面空白 解决:把js代码放在元素中(页面内容的后面),这样就把加载空白页面的时间缩短了...defer属性:立即下载,但会延迟进行. 只对外部脚本文件有效 asyns属性:与defer属性相似,都可以改变处理脚本行为,但标记asyns的脚步并不能保证它们的先后执行顺序....属性,相当于告诉浏览器立即下载,但延迟进行,虽然我们把放在中但其中包含的延迟脚本讲遇到浏览 器标签再进行....HTML5规范要求脚本按照他们出现的先后顺序再进行,因此第一个延迟脚本会先于第二个延迟脚本进行, 而这两个脚本会先于DOMcontentLoaded事件触发前执行,但在现实当中,延迟脚本不应定会按照顺序执行

    3.9K20

    Html图片懒加载动画,js实现图片懒加载效果

    大家好,又见面了,我是你们的朋友全栈君。...本文实例为大家分享了js图片懒加载的具体代码,供大家参考,具体内容如下 图片懒加载,思路:当鼠标滑动到对应图片的高度时,进行图片的加载; #div{ width: 575px; height: auto...值 for (var i = 0;i var aImgTop = getPos(aImg[i]).top; // 当滚动的时候进行判断,看他的滚动的高度加上它的clientHeight 是否比它的 top...值大 // 如果大或等于说明滚动到当前位置可以加载图片 if (oScrollTop + clientH >= aImgTop) { // 进行图片的加载 aImg[i].src = aImg[i...].getAttribute(“_src”); } } } 当有类似于瀑布流的布局时常用的加载模式 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    9.4K70

    htmlimg图片加载失败_js针对图片加载失败的处理方法分析

    大家好,又见面了,我是你们的朋友全栈君。 本文实例讲述了js针对图片加载失败的处理方法。...分享给大家供大家参考,具体如下: 在项目中不可避免会用到图片,尤其是列表,有时候图片会加载失败;这样就会显示一个很难看的坏图片缩略图;下面介绍两种方法,解决这个问题: 1、如果在你的项目中有引入jQuery...插件,你可以使用error([[data],fn])这个函数; $(“img”).error(function(){ //当图片加载失败时,你要进行的操作 //$(this).attr(‘src’,...object.addEventListener(“error”, myScript); 支持的 HTML 标签: , , , 另外,当图片加载错误的时候,触发onerror事件,还可使用一下方法进行处理...用默认的图片替换 PS:这里再为大家附上javascript系统自带事件参考表供大家参考查询: 希望本文所述对大家JavaScript程序设计有所帮助。

    6.6K20

    Vue.js中的延迟加载和代码拆分

    有关案例统计,延迟2秒导致每位访客的收入损失4.3%。 延迟加载 那么当我们仍然需要添加新功能并改进我们的应用程序时,我们如何削减budle包大小?答案很简单 - 延迟加载和代码分割。...顾名思义,延迟加载是一个懒惰地加载应用程序的部分(块)的过程。换句话说 - 只有在我们真正需要它们时加载它们。代码拆分只是将应用程序拆分为多个延迟加载的代码块的一种处理方式。 ?...现在是时候看看我们如何在我们自己的Vue.js应用程序中使用延迟加载。 动态导入 我们可以使用webpack的动态导入,轻松地加载我们应用程序的某些部分。...在DOM中需要渲染组件之前,组件将不会加载。想要加载,只要v-if值更改为true即可。 总结 延迟加载,是使您的Web应用程序更高效并减少js bundle大小的最佳方法之一。...我们已经学习了如何使用Vue组件进行延迟加载。 在本系列的下一部分中,我将向您展示在任何Vue.js应用程序上获得显着性能提升的最有用(也是最快)的方法。

    7.8K10
    领券