lazyload

lazyload 指缓冲加载,即有些内容只有在你需要看到它时才会被加载并显示。

这里主要介绍jquery的lazyload 插件,用来缓冲加载图片。

如果一篇文章很长有很多图片的话,下载图片就需要很多时间,这款插件,会检测你的滚动情况,只有你要看到那个图片的时候,它才会从后台请求下载图片,然后显示出来。使用这个插件,可以在需要显示图片的时候,才下载图片,所以可以减少服务器的压力,避免不必要的资源下载。如果一个人不看下面的图片,那加载下面的图片就是一种浪费。

jquery lazy load原理

在 img 标签中添加新的属性,把 src 属性的值指向占位图片,也可以不再使用src属性,添加 data-original 属性,让其指向真正的图像地址。

jquery lazy load使用

第一步:加载相关文件。

首先要加载jquery和这个插件。使用以下代码,加载这几个文件(使用CDN):

CDN:https://cdnjs.com/libraries/jquery

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.js"></script>

第二步:定义图片结构。

按照官方的建议,定义你的img结构:

四大属性必须同时具备:class data-original width height

class用来定位需要使用lazyload的元素;
data-original用来指向实际图片位置,
width, height用来设置图片大小,
另外src用来指向占位符图片位置,也可以不使用,不使用的话原图片未加载时是灰色的区域。

<img class="lazy" src="img/grey.gif" data-original="img/example.jpg" width="640" heigh="480">

第三步:触发这个插件,生效。

具体使用的语句为:

$("img.lazy").lazyload();

完整code:

<html lang="en">
   <head>
      <title>lazy load demo</title>
	  <style type="text/css">
	  </style>
   </head>
   
   <body>
      This is for lazyload demo:</br>
      <img src="1.png" width="750", height = "460"/>
	  <img src="1.png" width="750", height = "460"/>
	  
	  <img class="lazyload"   alt="lazyload" data-original="2lazy.png" width="750" height="360">
	  <img class="lazyload"   alt="lazyload" data-original="3lazy.png" width="750" height="360">
	  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
	  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.lazyload/1.9.1/jquery.lazyload.js"></script>
      <script>
           $("img.lazyload").lazyload({
            threshold: -200,
            effect: "fadeIn"
        });
      </script>
   </body>
</html>

jquery lazy load高级用法

lazyload()函数中还可以使用很多参数,就是lazyload的高级用法了,有以下常用的参数可选:

提前加载

默认的情况是,当你滚动到图片位置的时候,插件开始加载。这样,用户可能首先看到的是一个空白图像,然后再缓慢出现。如果你想在用户滚动之前,提前加载这个图像,你可以配置一下参数。

threshold: 200, // 当距离图片还有200像素的时候,就开始加载图片。

自定义显示效果

默认的图片实现效果,就是没有效果,下载完成之后,直接显示出来。这样的用户体验并不好,你可以设置 effect 属性,来控制显示图片的效果。

effect: “fadeIn”, // 控制显示图片的效果,fadeIn的效果淡入动画。

自定义触发事件

默认的触发事件是滚动,默认情况下,是要等到用户向下滚动并且图像出现在显示区域时才触发。你可以使用event属性设置你自己的加载事件,之后你可以自定义触发这个事件的条件,然后去加载图像。

event: “click”,

加载不可见图像

有部分图像是不可见的,我们对其加上类似 display:none 等属性的图像。默认的情况下,这个插件是不会加载隐藏的不可见图像。如果我们需要用它加载不可见图像,我们需要将 skip_invisible 设置为 false

$(“img.lazy”).lazyload({ skip_invisible : false });

浏览器不支持javascript时的降级处理

应对这个问题,我们需要引入 noscript 标签。大体思路如下:
用 noscript 包含真实的图像位置,当浏览器不支持 Javascript,直接显示图像。对现有图像,隐藏处理,使用 show() 方法触发显示。这样,如果浏览器不支持 Javascript,我们自定义的 img 就不会出现,而显示 noscript 里面的图像。

具体实现代码如下:

<img src="img/grey.gif" data-original="img/example.jpg" width="640" heigh="480"> 
<noscript><img src="img/example.jpg" width="640" heigh="480"></noscript>

<script type="text/javascript"></script>
   $("img.lazy").show().lazyload();
</script>

参考
https://webcache.googleusercontent.com/search?q=cache:NWv-tK1s4joJ:https://blog.wpjam.com/article/jquery-lazyload-js/+&cd=4&hl=zh-CN&ct=clnk&gl=hk