为什么需要懒加载?
在一些图片比较多的网站(比如说大型电商网站)图片是非常多的,如果我们在打开网页的一瞬间就把网站的所有图片加载出来,很有可能造成卡顿和白屏的现象,用户体验变得极其的差,要是遇到脾气暴躁的小伙伴相信直接反手就是一个Ctrl+W。
因为图片真的很多,一瞬间就把网站的所有图片加载出来浏览器短时间内根本处理不完,但是我们打开网站的那一瞬间仅仅只能看到视口内的图片,这时候去加载网页最底部的图片是非常浪费资源和没有必要的,所以遇到这种情况使用懒加载
技术就显得尤为必要了。
懒加载实现原理
懒加载的原理其实很简单,就是预先将图片真实的src
放在我们自定义的属性里面(比如data-src
),当图片出现在了我们的视口范围之内的时候,再把data-src
赋值给src
属性,完成图片加载。
这里有个点就是初始化时可以不给img标签加上src
属性,因为只要存在src
属性,浏览器就会去执行一次请求将其指向的资源下载并应用到文档内,这里不加上可以提升一些性能
具体实现
基于前面讲解的思路,我们自己手写一个懒加载
新建一个lazyload.html
文件,初始化dom结构并设置对应的样式
接下来是JS部分,我们需要提前知道几个值,一个是当前浏览器窗口的视口高度,另一个是每张图片距离视口顶部的距离,因为只有当图片距离顶部的距离小于我们的视口高度,那么就代表这张图片已经出现在我们的视口范围内了。
获取浏览器视口高度
获取可视区域的高度我们通常使用window.innerHeight
就可以拿到了,当然如果需要兼容低版本IE浏览器的话则可以使用document.documentElement.clientHeight
来获取,这里我们做一个兼容处理
获取图片离顶部的距离
这里我们简单粗暴一点,直接使用getBoundingClientRect()
这个方法来获取,对这个方法不了解的小伙伴可以点击这里进行查看
到这里,我们所需要的两个值就都可以拿到了,下面直接上代码:
最后效果
到这里我们的图片懒加载就写完了,下面是效果图,喜欢的朋友麻烦点个赞吧
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 模板不会安装或需要功能定制以及二次开发?
发表评论
还没有评论,快来抢沙发吧!