全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js前端实现图片懒加载(lazyload)的两种方式

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

思路:

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

关于各种宽高:

  1. 页可见区域宽: document.body.clientWidth;
  2. 网页可见区域高: document.body.clientHeight;
  3. 网页可见区域宽: document.body.offsetWidth (包括边线的宽);
  4. 网页可见区域高: document.body.offsetHeight (包括边线的宽);
  5. 网页正文全文宽: document.body.scrollWidth;
  6. 网页正文全文高: document.body.scrollHeight;
  7. 网页被卷去的高: document.body.scrollTop;
  8. 网页被卷去的左: document.body.scrollLeft;
  9. 网页正文部分上: window.screenTop;
  10. 网页正文部分左: window.screenLeft;
  11. 屏幕分辨率的高: window.screen.height;
  12. 屏幕分辨率的宽: window.screen.width;
  13. 屏幕可用工作区高度: 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>
require.config({
  baseUrl : "/static",
  paths: {
    jquery:'component/jquery/jquery-3.1.0.min'
    jqueryLazyload: 'component/lazyLoad/jquery.lazyload',//图片懒加载
  },
  shim: {
    jqueryLazyload: {
      deps: ['jquery'],
      exports: '$'
    }
  }
});
require(
  [
    'jquery',
    'jqueryLazyload'
  ], 
  function($){
    $(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容器混乱的时候可能出现可见区域内图片并没加载出来的情况
        }); 
      });
  });

为了代码可读性,属性值我都写好了注释。值得注意的是预制图片属性为data-original,并且最好是给予初始高宽占位,以免影响布局,当然这里为了演示我是写死的640x480,如果是响应式页面,高宽需要动态计算。

echo.js方式

在前面“前端知识的一些总结”的博文中,介绍了一款非常简单实用轻量级的图片延时加载插件echo.js,如果你的项目中没有依赖jquery,那么这将是个不错的选择,50行代码,压缩后才1k。当然你完全可以集成到自己项目中去!

下载地址:https://github.com/helijun/helijun/tree/master/plugin/echo

<style>
  .demo img { 
    width: 736px; 
    height: 490px; 
    background: url(images/loading.gif) 50% no-repeat;}
</style>
<div class="demo">
  <img class="lazy" src="images/blank.gif" data-echo="images/big-1.jpg">
</div>
<script src="js/echo.min.js"></script>

<script>

Echo.init({
  offset: 0,//离可视区域多少像素的图片可以被加载
   throttle: 0 //图片延时多少毫秒加载
}); 

</script>

说明:blank.gif是一张背景图片,包含在插件里了。图片的宽高必须设定,当然,可以使用外部样式对多张图片统一控制大小。data-echo指向的是真正的图片地址。

 总结:

两者都非常简单,实现思路是一样的,只是jquerylazyload多几个属性。其实常用的echo就足够了,并且完全可以集成到自己项目中的公共js中,图片懒加载是相当常见且简单实用的功能,如果你的项目中还是傻瓜式的一次性全部加载,那么请花20分钟优化下~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 图片懒加载lazyload  # lazyload  # 加载图片  # 前端必会的图片懒加载(三种方式)  # 前端图片懒加载(lazyload)的实现方法(提高用户体验)  # 前端JS图片懒加载原理方案详解  # 前端图片懒加载的原理与3种实现方式举例  # 加载  # 的是  # 下载地址  # 这是  # 我是  # 几个  # 是个  # 鼠标  # 有很多  # 我都  # 出现在  # 这也  # 要用  # 可以使用  # 中去  # 两张  # 在前面  # 后才  # 再加  # 第一张 


相关文章: 杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  建站之星如何一键生成手机站?  桂林网站制作公司有哪些,桂林马拉松怎么报名?  html制作网站的步骤有哪些,iapp如何添加网页?  如何在建站之星网店版论坛获取技术支持?  宝塔建站无法访问?如何排查配置与端口问题?  建站之星安装路径如何正确选择及配置?  独立制作一个网站多少钱,建立网站需要花多少钱?  建站之星客服服务时间及联系方式如何?  如何高效完成独享虚拟主机建站?  建站主机如何安装配置?新手必看操作指南  如何注册花生壳免费域名并搭建个人网站?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  成都响应式网站开发,dw怎么把手机适应页面变成网页?  如何基于云服务器快速搭建网站及云盘系统?  网站制作说明怎么写,简述网页设计的流程并说明原因?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  建站之星伪静态规则如何设置?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  广州商城建站系统开发成本与周期如何控制?  如何快速上传自定义模板至建站之星?  如何在自有机房高效搭建专业网站?  如何在阿里云高效完成企业建站全流程?  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  网站制作软件免费下载安装,有哪些免费下载的软件网站?  建站之星后台密码遗忘如何找回?  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  建站之星价格显示格式升级,你的预算足够吗?  建站主机数据库如何配置才能提升网站性能?  如何在阿里云通过域名搭建网站?  如何用IIS7快速搭建并优化网站站点?  香港服务器租用每月最低只需15元?  行程制作网站有哪些,第三方机票电子行程单怎么开?  陕西网站制作公司有哪些,陕西凌云电器有限公司官网?  网站按钮制作软件,如何实现网页中按钮的自动点击?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  家庭建站与云服务器建站,如何选择更优?  XML的“混合内容”是什么 怎么用DTD或XSD定义  如何快速搭建二级域名独立网站?  如何在云主机快速搭建网站站点?  个人摄影网站制作流程,摄影爱好者都去什么网站?  香港服务器租用费用高吗?如何避免常见误区?  如何用AWS免费套餐快速搭建高效网站?  如何通过VPS建站无需域名直接访问?  深圳网站制作的公司有哪些,dido官方网站?  如何快速搭建高效服务器建站系统?  正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。