1、PC端图片懒加载:

jquery.lazyload是一个实现图片延迟加载的jQuery 插件,它可以延迟加载长页面中的图片。在浏览器可视区域外的图片在初始状态下不会被载入,直到用户将页面滚动到它们所在的位置。

1.引入js文件

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

2.img标签

<img class = "lazy" src="data:images/placeholder.gif" data-original="images/example.png">

img标签的src指向一个图片占位符,这里推荐一个在线获取图片占位符的站点 > http://placehold.it/,真实图片路径必须写在data-original中。

3.调用lazyload

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

图片的占位符除了可以通过src属性来指定,也可以通过lazyload函数的参数来指定:

$("img.lazy").lazyload({placeholder: "images/placeholder.gif"
});

4.占位图片事件触发加载

如果我们希望滚到到图片的位置后,还要通过click或hover事件来唤醒图片的加载,我们可以指定lazyload函数的event属性:

$("img.lazy").lazyload({placeholder: "images/placeholder.gif",event: "click"
});

当图片完全加载的时候,插件默认地使用show()方法来将图显示出来。你也可以使用其他的效果,如fadeIn:

$("img.lazy").lazyload({effect: "fadeIn"
})

5.提前加载图片

lazyload插件默认用户滚动到图片位置时才触发加载图片,如果我们希望滚动到距离图片一定位置就触发加载,可以指定lazyload函数的threshold参数:


$(“img.lazy”).lazyload({
threshold: 200
});

这样,当用户滚动到距离图片200像素时图片就开始加载了。

6.设置查找图片张数

lazyload的实现原理是,在页面滚动时,会搜索未加载的图片,如果图片在可视范围内就加载,默认情况下当找到第一张不在可见区域的图片时就会停止搜索。而搜索的顺序就是HTML文档中dom节点的定义顺序,所以如果有些图片定义在前面,但由于页面不好的布局图片将会呈现在后面,那么就会导致图片没办法正常显示。

此时我们可以通过lazyload函数的failure_limit参数:

$("img.lazy").lazyload({         failure_limit: 10
});

这样一来,插件会搜索至少10个未加载的图片才停止搜索,如果你的图片布局比较不规则,可以尝试将这个参数调大。

下面这是一个demo 直接复制粘贴到sublime上就能查看了 比心♥ ♥

// 首先引入jQuery文件和懒加载文件<script type="text/JavaScript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="http://www.w3cways.com/demo/LazyLoad/js/jquery.lazyload.js"></script><div>
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
<img class="lazy" data-original="https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg">
</div><script type="text/javascript">
$(function() {$("img.lazy").lazyload({placeholder: "https://www.juzilicai.com/res/img/v2/intro/novice/vip_top.jpg",effect : "fadeIn"
});
});
</script>

根据用户行为的预加载

http://www.zhangxinxu.com/wordpress/2016/06/image-preload-based-on-user-behavior/

这个文章有时间可以看看

2、Mobile移动端懒加载:

一款非常简单实用轻量级的图片延时加载插件echo.js,如果你的项目中没有依赖jquery,那么这将是个不错的选择,50行代码,压缩后才1k。当然你完全可以集成到自己项目中去!
PC和移动端都适用!很轻量好用!

下载地址:https://github.com/toddmotto/echo

echo.js-demo地址: https://peiluojia.github.io/echo.js-demo/

css:

<style>.demo img { width: 736px; height: 490px; background: url(images/loading.gif) 50% no-repeat;}
</style>

html:

<div class="demo"><img class="lazy" src="data:images/blank.gif" data-echo="images/big-1.jpg">
</div>

blank.gif 是一个默认的1*1的空白图片,data-echo 的属性值是图片的真实地址。设置北京图loading.gif会有loading的效果,blank.gif会根据父盒子的宽度生成一个宽高相等的正方形块。当blank.gif在可视区域内,图片就会加载。

js:

<script src="js/echo.min.js"></script><script>Echo.init({offset: 0,//离可视区域多少像素的图片可以被加载throttle: 0 //图片延时多少毫秒加载
}); </script>

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


作者:裴珞嘉
来源:CSDN
原文:https://blog.csdn.net/alokka/article/details/74421347
版权声明:本文为博主原创文章,转载请附上博文链接!

PC端、移动端(手机端)图片懒加载方法整理相关推荐

  1. 前端手写(二十二)——手写图片懒加载

    一.写在前面 图片懒加载是我们在开发中,需要进行处理的问题,也是前端性能优化的一个重要的因素. 二.手写懒加载 <script>function lazyload() {const img ...

  2. 手写Vue个人组件库——fl-Lazyimg 图片懒加载

    fl-Lazyimg图片懒加载 基础使用 将img绑定在fl-Lazyimg标签中,设置img的src-data为图片路径即可使用. [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上 ...

  3. dw自动滚动图片_3分钟搞定图片懒加载

    什么是图片懒加载 图片的懒加载就是在页面打开的时候,不要一次性全部显示页面所有的图片,而是只显示当前视口内的图片,一般在移动端使用(PC端主要是前端分页或者后端分页). 为什么需要懒加载 对于一个页面 ...

  4. 图片懒加载, Vue-Lazyload实现懒加载

    1.图片懒加载 1.1.什么是图片懒加载 图片懒加载 图片的懒加载就是在页面打开的时候,不要一次性全部显示页面所有的图片,而是只显示当前视口内的图片,一般在移动端使用(PC端主要是前端分页或者后端分页 ...

  5. ios wkweb设置图片_ios·WKWebView\UIWebView加载HTMLString,实现图片懒加载

    背景: 项目中开发商品类型数据,数据可变性较大,所以商品详情数据存在文案和图片富文本显示,后台返回了html格式的数据供前端展示. 如果用webView直接显示的话,需要等html内容完全展示才能获取 ...

  6. JS无限滚动、回到顶端和图片懒加载

    目录 前言 1 无限滚动(垂直) 1.1 效果和代码 1.2 过程解释 1.2.1 监听页面滚动 1.2.2 获取距页面底部的距离 2 回到顶端 2.1 效果和代码 2.2 过程解释 3 图片懒加载 ...

  7. uniapp实战项目 (仿知识星球App) - - 实现图片懒加载

    实战项目名称:仿知识星球App 技术栈:前端 => uni-app ( 后端:Node.js + Mysql + Apollo + Graphql ) 已实现功能:微信登录,创建星球,内容管理, ...

  8. “懒”的妙用——浅析图片懒加载技术

    1.定义 图片懒加载是一种网页优化技术.图片作为一种网络资源,在被请求时也与普通静态资源一样,将占用网络资源,而一次性将整个页面的所有图片加载完,将大大增加页面的首屏加载时间.为了解决这种问题,通过前 ...

  9. 数据懒加载和图片懒加载

    数据懒加载是项目优化的一种类型 主要是监听, 监听的 DOM 元素是否有进入可视区 进入了可视区就可以做一些事情, 如: 发送请求, 返回出数据 离开可视区停止对 DOM 元素的监听 首先我们使用的是 ...

最新文章

  1. 微软出面解释Win11各种大bug,引发网友一顿嘲讽:都是祖传手艺
  2. C语言经典例68-数组元素循环偏移
  3. Laravel 5.1 artisan 的使用
  4. mysql基于binlog增量更新_一个应用它提取MySQL binlog,解析binlog并将增量更新数据推送到不同的接收器...
  5. 服务器被黑给我上了一课
  6. ios 启用 证书_如何在iOS 10中启用就寝提醒,轻柔的唤醒和睡眠跟踪
  7. spring总结(01)
  8. 美团flutter_Flutter包大小治理上的探索与实践
  9. 类成员与方法访问控制从严
  10. 为什么 Flink 无法实时写入 MySQL?
  11. 【SORT系列】SIMPLE ONLINE AND REALTIME TRACKING
  12. python 递归函数 内存底层_Python基础篇【第八篇】:剖析递归函数
  13. opengl编程指南第9版源码编译注意事项
  14. win10修改计算机密码,教你如何更改win10系统电脑密码
  15. 单片机牛人的学习经历
  16. JDK,JRE,JVM的区别
  17. vscode 离线安装.vsix(window 全教程)
  18. Windows Installer (无法访问你试图使用功能所在的网络位置)问题
  19. 小白的python学习实录 基础篇(八)面向对象
  20. Linux里面的进程管理

热门文章

  1. xps9570装双系统:Windows10+Archlinux
  2. 和平精英打击感弱、画面不流畅?两步教你重新设置秒变刺激战场
  3. 用开源飞控套件做一架Mini四轴飞行器
  4. 仿制斯坦福机械狗——组装过程
  5. 查询出“张”姓学生中平均成绩大于75分的学生信息
  6. 介绍一个基于Spring Redis Lua的无侵入应用级网关限流框架
  7. win10下打开.hlp文件真正简单解决方法?
  8. C++ Primer Plus(第6版)---编程作业完成(第十章)
  9. 程序员如何高效准备简历和面试04:技术简历应该怎么写、怎么投?
  10. YY游戏Cloud 2.0网络设计分析