分享好友 教程首页 教程搜索 频道列表

前端实现图片懒加载(lazyload)

2022-06-26 23:153300
+关注29
核心提示:用代码测试

在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽。这也就是们通常所说的首屏加载,技术上现实其中要用的技术就是图片懒加载–到可视区域再加载。


思路:

将页面里所有img属性src属性用data-xx代替,当页面滚动直至此图片出现在可视区域时,用js取到该图片的data-xx的值赋给src。


懒加载 :为什么


解决页面假死状态


单页面vue和react,,只有一个HTML,首屏加载慢,后期切换比较快,不利于搜索引擎优化(SU),前端渲染的都不利于


首屏做到500kb才利于用户体验,最大不要超过1兆


关于各种宽高:

页可见区域宽: document.body.clientWidth;
网页可见区域高: document.body.clientHeight;
网页可见区域宽: document.body.offsetWidth (包括边线的宽);
网页可见区域高: document.body.offsetHeight (包括边线的宽);
网页正文全文宽: document.body.scrollWidth;
网页正文全文高: document.body.scrollHeight;
网页被卷去的高: document.body.scrollTop;
网页被卷去的左: document.body.scrollLeft;
网页正文部分上: window.screenTop;
网页正文部分左: window.screenLeft;
屏幕分辨率的高: window.screen.height;
屏幕分辨率的宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;


示例:


jqueryLazyload方式

下载地址:https://github.com/helijun/helijun/blob/master/plugin/lazyLoad/jquery.lazyload.js

<section class="module-section" id="container">
     <img class="lazy-load" data-original="../static/img/loveLetter/teacher/teacher1.jpg" width="640" height="480" alt="测试懒加载图片"/>
</section>



$(document).ready(function() {     
    $("img.lazy-load").lazyload({ 
     effect : "fadeIn", //渐现,show(直接显示),fadeIn(淡入),slideDown(下拉)
     threshold : 180, //预加载,在图片距离屏幕180px时提前载入
     event: 'click',  // 事件触发时才加载,click(点击),mouseover(鼠标划过),sporty(运动的),默认为scroll(滑动)
     container: $("#container"), // 指定对某容器中的图片实现效果
     failure_limit:2 //加载2张可见区域外的图片,lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况
  }); 
});



本文标签: #图片 #延迟 #懒加载
免责声明:凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
生成海报
您可能在找更多

HTML5+CSS3+JS实例之带标题描述的圆角图片手风琴效果

    圆角图片手风琴效果

小黑 HTML教程2024-03-26

在DESTOON系统模板开发中imgurl函数的用法说明

    imgurl函数是为了让在前端模板中没有标题图的信息默认一张系统自带的nopic图,总结:​imgurl函数就是为了页面好看,自动补充而用

小黑 随手记2024-03-10

JQ实例-根据select的data-*属性更改图片img的src链接

    用代码放进HTML中测试

小黑 JavaScript教程2023-06-28

下一篇
我来说两句
抢沙发