美文网首页源码干货
前端技术:ES6实现一个图片懒加载类

前端技术:ES6实现一个图片懒加载类

作者: 源码时代官方 | 来源:发表于2018-11-21 10:23 被阅读2次

当前端在一个网页中,请求很多的图片时,众所周知,图片资源比较大,请求对太多对服务器的压力比较大,所以我们会用到图片懒加载技术,特别是移动端,移动端资源和网络环境都不比pc端,而移动端很多布局都是列表形式的,会涉及到很多图片列表,如果一次加载,会造成加载很慢的情况。

当然,现在懒加载的第三方资源比较多,jquery的有lazyload.js,vue也有第三方模块vue-lazyload 等, 但是很多同学只会用现成的,不知道其中的原理,那么今天来教大家自己动手使用原生JavaScript实现懒加载功能。

首先,我们需要准备一个来使用懒加载的页面,页面代码如下:

image

页面中所有的图片的src属性都为空,取而代之,使用data-src属性,写上需要加载的图片的路径url,我们只需要在懒加载的代码中,当符合条件的时候,把src属性的值替换成对应的data-src属性的值即可。

那么,接下来,我们引入自己实现的懒加载类的JavaScript代码。如下:

image

首先,我们需要在类LazyLoad的构造器中,获取当前屏幕可视窗口的高度,如果是主流浏览器的话,只需要window.innerHeight即可,考虑兼容IE,还得需要兼容性写法,如:

document.documentElement.clientHeight 和 document.body.clientHeight,。完成这一步后,

我们直接调用初始化方法 init(); 代码如下:

image

那么接下来,我们再init()方法中,获取所有的图片,获取结果是一个数组,然后循环这个图片数组,获取每一张图片上下边框,到当前可视窗口的位置,缓存在变量里面,获取图片上下边框分别到上下可视窗口的距离,调用 getClientRect方法, 代码如下:

image

其中变量imgTop为图片上边框,到当前可视窗口上边的距离,imgBottom为当前图片下边框,到当前可视窗口下边的距离,getClientRect()方法的具体实现细节如下。

image

那么,最后,就比较简单了,只需要判断图片是否出现在当前可视范围之内,如果出现在当前可视窗口的范围之内,就加载图片(即把src属性替换成对应的data-src属性),

如果不在,就不加载,那么判断的条件就是两个:图片的上边进入窗口的范围 或 图片的下边进入窗口的范围,具体实现代码如下:

image

如果上边大于0且小于当前可视窗口高度或者下边大于0且小于当前可视窗口高度,那么就是图片进入了可视窗口范围,需要加载。

最后,在页面里面,当页面加载或页面重置尺寸或页面页面滚动的时候,创建实例化一个懒加载对象,即实现功能,代码如下:

image

最后我们看一下初始化的时候,只有三张图片在当前可视区域范围之内,只加载了三张图片,当鼠标往下滚动,进入窗口的图片都会被逐一加载进来,没有进入当前窗口范围的图片,都不会被加载,至此,我们实现了图片懒加载类。

image image

相关文章

  • 前端技术:ES6实现一个图片懒加载类

    当前端在一个网页中,请求很多的图片时,众所周知,图片资源比较大,请求对太多对服务器的压力比较大,所以我们会用到图片...

  • 图片懒加载

    前端实现图片懒加载(lazyload)的两种方式 原生JS实现最简单的图片懒加载 30行Javascript代码实...

  • 前端如何实现图片懒加载(lazyload) 提高用户体验

    来源:前端如何实现图片懒加载(lazyload) 提高用户体验 原文地址:http://i.jakeyu.top/...

  • 前端性能优化方式

    2.前端性能优化方式 减少http请求。 大量图片渲染使用懒加载技术,图片压缩。 压缩代码,将javascript...

  • 前端实现图片懒加载思路

    大家都知道,一张图片就是一个 标签,而图片的来源主要是src属性。浏览器是否发起亲求就是根据是否有src属性决定的...

  • 图片懒加载的原理

    懒加载思路及实现 实现懒加载有四个步骤,如下:1.加载loading图片2.判断哪些图片要加载【重点】3.隐形加载...

  • iOS底层--懒加载类/非懒加载类

    懒加载类和非懒加载类的区分很简单,就是看类有没有实现load方法 非懒加载类:在App启动时就开始对其进行实现,因...

  • 懒加载和预加载

    懒加载 js懒加载 意义 懒加载(LazyLoad)是前端优化的一种有效方式,能极大的提升用户体验,图片加载是其重...

  • 图片懒加载

    延迟加载、懒加载技术 什么是懒加载技术:原理:先将img标签中的src链接设为同一张图片(空白图片),将其真正的图...

  • selenuim和phantonJs处理网页动态加载数据的爬取

    一.图片懒加载 什么是图片懒加载? 图片懒加载是一种网页优化技术。图片作为一种网络资源,在被请求时也与普通静态资源...

网友评论

    本文标题:前端技术:ES6实现一个图片懒加载类

    本文链接:https://www.haomeiwen.com/subject/rmeqqqtx.html