软件教程 2025年08月6日
0 收藏 0 点赞 407 浏览 931 个字
摘要 :

之前潘老师博客一直存在一个问题,就是访问首页时文章列表的缩略图一开始不会正常显示,原因在于模板开发者使用了基于jquery.lazyload.js的延时加载技术,但是在使用过程……

之前潘老师博客一直存在一个问题,就是访问首页时文章列表的缩略图一开始不会正常显示,原因在于模板开发者使用了基于jquery.lazyload.js延时加载技术,但是在使用过程中配置出了问题,导致图片明明在可见区域却一直不显示,直到滚动栏往下滚动很多才会加载出来,所以潘老师就研究了下车,最终发现问题所在,并成功解决。
jquery lazyload图片延时加载在可见区域却不显示
由于原始js是压缩版,还要格式化后调试才能看出在哪一行,通过浏览器F12疯狂调试,终于找到了延时加载的代码所在位置,F12调试图:
jquery lazyload图片延时加载在可见区域却不显示
找到代码图:
jquery lazyload图片延时加载在可见区域却不显示
后来经过一番查找,发现有一个属性对本问题影响很大,就是failure_limit 属性,将代码改为如下问题解决:

$("img").lazyload({
       //渐现,show(直接显示),fadeIn(淡入),slideDown(下拉)
       effect : "fadeIn", 
       //预加载,在图片距离屏幕180px时提前载入
       threshold : 180,   
       failure_limit:50 
 });

failure_limit 到底起了什么作用呢?

由于Lazy Load 有一个循环查找 img 的机制,根据 HTML 文档的布局从上往下查找,当找到第一个并未显示加载的 img时,就会停止往下查找。(其实就是对 $(“img”) 这个对象(组)进行顺序查找) 。

而现在网站设计时,都会用到大量的定位样式,如: float 和 position , 这样在浏览器呈现的布局效果和 HTML 文档中的 DOM 顺序有很大差异,这样就会存在一种情况,某 img 标签已出现在屏幕上,但它却无法显示! 因为它在 HTML 文档中的实际位置排在了那些还没有显示的img 标签后面, 这样会导致显示在屏幕上的这个img标签无法加载相应的图片。

当Lazy Load 在找到第一个未显示的 标签时,查找已经被终止了, 并没有继续往下遍历,这样就出现了我遇到的情况了,那解决办法也非常简单的,我们可以在原来的代码上直接把failure_limit属性加上,并把值设置的比较大,比如我的就需要设置到50,这样 Lazy Load 会查找到第50个未显示的标签处。当在图片多且布局复杂的页面时, failure_limit 的作用就很大了,尤其是当你的网站布局很”变态”时,那可以把该值调得更高基本就可以解决问题了。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/5796.html

管理员

相关推荐
2025-08-06

文章目录 一、Promise基础回顾 二、Promise 与 axios 结合使用场景及方法 (一)直接返回 axios …

269
2025-08-06

文章目录 一、模块初始化时的内部机制 二、常见导出写法的差异分析 (一)写法一:module.exports…

107
2025-08-06

文章目录 一、ResizeObserver详解 (一)ResizeObserver是什么 (二)ResizeObserver的基本用法 …

683
2025-08-06

文章目录 一、前期准备工作 (一)下载相关文件 (二)安装必要工具 二、处理扣子空间生成的文件…

338
2025-08-06

文章目录 一、官方文档 二、自动解包的数据类型 ref对象:无需.value即可访问 reactive对象:保持…

371
2025-08-06

文章目录 一、Hooks的工作原理 二、在if语句中使用Hook会出什么岔子? 三、React官方的Hook使用规…

843
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号