温馨提醒

如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢

本文最后更新于2023年8月1日,已超过 180天没有更新

之所以使用图片延迟加载技术,是为了避免浪费带宽。有些页面上嵌入了很多图片,但电脑的屏幕一次只能显示一张或顶多2张。而当用户进入这个页面时,正常情况下,这30多种图片会全部一次性从服务器加载到客户端,就造成的服务器的压力,也给用户的浏览器造成压力,而且,也许用户之看了前几张图片就退出去了,那其它图片的加载就是浪费。

而使用图片延迟加载技术时,随着用户向下滚动页面,只有当图片滚动到可视视窗内,或接近可视视窗时,这个图片才会从服务器加载。这样就是尽可能的减少不必要的加载。

使用方法

引用jquery和jquery.lazyload.js到你的页面

<script src="https://cdn.jsdelivr.net/npm/lazyload@2.0.0-rc.2/lazyload.js"></script>

为图片加入样式lazy 图片路径引用方法用data-original

<img class="lazy" data-original="img/bmw_m1_hood.jpg">
<img class="lazy" data-original="img/bmw_m1_side.jpg">
<img class="lazy" data-original="img/viper_1.jpg">
<img class="lazy" data-original="img/viper_corner.jpg">
<img class="lazy" data-original="img/bmw_m3_gt.jpg">
<img class="lazy" data-original="img/corvette_pitstop.jpg">

出始化lazyload并设置参数

$("img.lazy").lazyload({
  placeholder : "img/grey.gif", //用图片提前占位
    // placeholder,值为某一图片路径.此图片用来占据将要加载的图片的位置,待图片加载时,占位图则会隐藏
  effect: "fadeIn", // 载入使用何种效果
    // effect(特效),值有show(直接显示),fadeIn(淡入),slideDown(下拉)等,常用fadeIn
  threshold: 200, // 提前开始加载
    // threshold,值为数字,代表页面高度.如设置为200,表示滚动条在离目标位置还有200的高度时就开始加载图片,可以做到不让用户察觉
  event: 'click',  // 事件触发时才加载
    // event,值有click(点击),mouseover(鼠标划过),sporty(运动的),foobar(…).可以实现鼠标莫过或点击图片才开始加载,后两个值未测试…
  container: $("#container"),  // 对某容器中的图片实现效果
    // container,值为某容器.lazyload默认在拉动浏览器滚动条时生效,这个参数可以让你在拉动某DIV的滚动条时依次加载其中的图片
  failurelimit : 10 // 图片排序混乱时
     // failurelimit,值为数字.lazyload默认在找到第一张不在可见区域里的图片时则不再继续加载,但当HTML容器混乱的时候可能出现可见区域内图片并没加载出来的情况,failurelimit意在加载N张可见区域外的图片,以避免出现这个问题.
});

背景图延迟加载

大多数人使用jQuery.lazyload,是用于image加载,但其实它还有一个很重要的功能,就是背景图延迟加载。背景图延迟加载的用法和图片延时加载的用法很相似,首先,你需要使用背景的元素需要这样写:

<div class="lazy" data-original="img/bmw_m1_hood.jpg" ></div>
<div class="lazy" data-original="img/bmw_m1_side.jpg" ></div>
<div class="lazy" data-original="img/viper_1.jpg" ></div>
<div class="lazy" data-original="img/viper_corner.jpg" ></div>
<div class="lazy" data-original="img/bmw_m3_gt.jpg" ></div>
<div class="lazy" data-original="img/corvette_pitstop.jpg" ></div>

然后用一段js

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

插件官方地址:

https://github.com/tuupola/lazyload

http://plugins.jquery.com/lazyload/

历史上的今天
08月
1
    抱歉,历史上的今天作者很懒,什么都没写!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。