实现图片懒加载

23 篇文章 0 订阅
订阅专栏
3 篇文章 0 订阅
订阅专栏

图片懒加载就是当图片非常多,一屏无法完全显示的时候,我们就会把暂时看不到的图片,延时等滚轴滚动到时再进行加载,也算是一种性能优化,图片分开下载就是大幅度提高了首次加载页面的速度,例如就像一些电商网站的商品显示一样,下面我们就来实现一下图片的懒加载。

1.不使用懒加载

我们首先写出基本的html页面,代码如下如图所示:

<!DOCTYPE html>
    <head>
        <style>
            img{
                width: 40%;
                height: 360px;
            }
        </style>
    </head>
    <body>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>
        <div>他年若遂凌云志,敢笑黄巢不丈夫</div>


       <div><img src="./hkk.jpg" /></div>
       <div><img src="./lufei.jpg"/></div>
       <div><img src="./timg.jpg"/></div>
        <script>
           
        </script>
    </body>

 显示如下所示:

                                     

 

 2.监听图片高度实现懒加载

实现思路就是当图片距离浏览器顶部的高度小于浏览器视窗的高度时我们就加载出图片。

那我们首先就不应该把图片显示出来,解决方案就是使用data-*属性,这是标签的自定义属性,就保证了开始不会执行,方便我们替换src属性来显示图片,下面我们来写js代码:

const imags = document.querySelectorAll('img');

            window.addEventListener('scroll', () => {
                imags.forEach((img) => {
                const imgTop = img.getBoundingClientRect().top; // 获取每张图片到浏览器顶部的距离
                    if (imgTop < window.innerHeight) {
                        const imgSrc = img.getAttribute('data-src'); // 拿到自定义属性的值
                        img.setAttribute('src', imgSrc);
                        console.log('加载');
                    }
                })
            })

这样我们就实现了懒加载,但是会有一个问题,就是这种监听的方法会一直重复触发加载的动作,即使资源已经加载完毕了,如下图,所以我们选择下面的方式,也是推荐使用的方法。 

3.IntersectionObserver

这是浏览器提供的构造函数,用于观察元素是否对于屏幕的可视区域可见,使用observe方法进行监听,unobserve方法取消监听,这样就是避免重复触发的问题:

const images = document.querySelectorAll('img');

            const callback = (enteries) => {
                enteries.forEach((e) => {
                    if (e.isIntersecting) { // 内置参数(boolean)是否能在浏览器中看到
                        const img = e.target;
                        const imgSrc = img.getAttribute('data-src');
                        img.setAttribute('src', imgSrc);
                        observe.unobserve(img);
                        console.log('加载');   
                    }
                })
            }

            const observe = new IntersectionObserver(callback);
            images.forEach((image) => {
                observe.observe(image);
            })

 

总结

        第二种懒加载的方式推荐使用,不会造成资源的浪费,给浏览器的压力没那么大,移动端也同样适用。

简单的图片懒加载实现
11-29
简单的图片懒加载实现
30行Javascript代码实现图片懒加载
qq_40126542的博客
12-20 221
小编推荐:Fundebug专注于JavaScript、微信小程序、微信小游戏,Node.js和Java实时BUG监控。真的是一个很好用的bug监控费服务,众多大佬公司都在使用。 前言 页面太多图片?那么请你花20分钟去优化一下页面的性能 讲道理,当你为图片的src赋值时,DOM节点渲染完毕时就会主动去请求src指向的资源,即使该图片不在用户的可视范围。那么,如果图片太多,加载页面的速度会...
前端性能优化-图片的预加载和懒加载
最新发布
weixin_43279210的博客
08-27 1193
在说到对图片资源进行优化时,那就不得不提到图片加载图片懒加载,可能很多朋友都了解这两者,但是一直没有很清晰的概念,以及什么时候用,用在什么场景下,今天就来详细的了解一下吧!
关于图片懒加载
dianchan2938的博客
12-08 130
对页面加载速度影响最大的就是图片,一张普通的图片可以达到几M的大小,而代码也许就只有几十KB。当页面图片很多时,页面的加载速度缓慢,几S钟内页面没有加载完成,也许会失去很多的用户。所以,对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载, 等到滚动到可视区域后再去加载。这样子对于页面加载性能上会有很大的提升,也提高了用户体验。 将页...
图片懒加载的几种实现方式
Wonder
03-22 4086
原理 在页面中有很多图片的时候,图片加载需要很多时间,很耗费服务器性能,不仅影响渲染速度还会浪费带宽,为了解决这个问题,提高用户体验,所以就出现了懒加载这种方式来减轻服务器的压力,即优先加载可视区域的内容,其他部分等进入了可视区域再加载,从而提高性能。 思路 图片是根据src进行加载的,在图片没有进入可视区域时,先不给src赋值(或者可以先给一个很小的loading图),等到图片进入可视区域再给src赋真正的值。图片的真实地址可以先存储在data-src中。 实现 <di...
实现图片懒加载的一种方法
txw0415的博客
05-27 552
使用jquery.lazyload.js  插件实例说明:使用懒加载,当页面在可视区窗口内图片才会加载出来,这样做能防止页面一次性向服务器响应请求导致服务器响应慢,页面卡顿或崩溃等问题&lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta charset="UTF-8"&gt; &lt;meta nam
微信小程序实现图片懒加载的示例代码
08-28
微信小程序实现图片懒加载的示例代码 微信小程序实现图片懒加载的示例代码是指通过在页面预加载图片,提高用户体验度的一种技术。这种技术可以在微信小程序中实现,通过预加载图片,减少用户等待的时间,提高用户...
angular实现图片懒加载实例代码
08-30
AngularJS,作为一个强大的前端框架,提供了多种实现图片懒加载的方法。本文将详细介绍如何在Angular中实现图片懒加载,并解决在实际应用中可能遇到的问题。 首先,我们提到的“angular-imglazyload”是一个...
IntersectionObserver实现图片懒加载的示例
11-29
以下是一个使用Intersection Observer API实现图片懒加载的示例: ```html <!DOCTYPE html> .list-item { height: 400px; margin: 5px; background-color: lightblue; list-style: none; } .list-item-...
原生JS实现图片懒加载之页面性能优化
10-17
本文将深入探讨如何使用原生JavaScript实现图片懒加载,以及这种方式如何帮助优化页面性能。 一、图片懒加载原理 1. 数据存储:首先,我们需要图片`<img>`标签添加一个自定义属性,如`data-src`,用来存储实际的...
如何实现一个图片懒加载
coderhangg
04-26 899
实现一个图片懒加载
JQuery实现页面图片懒加载效果仅需两行代码
07-12
JQuery实现页面图片懒加载效果,两个文件放进去,只需加入两行代码即可实现
实现图片懒加载的5种方式
maidu_xbd的博客
05-24 8786
offsetTop(图像距离顶部的高度)-scrollTop(页面被卷去的高度)
图片懒加载的四种实现方案
qq_44741577的博客
05-30 2641
加载:延迟加载,对于一个很长的页面,优先加载可视区域的内容,其他部分等进入可视区域时再加载
移动端处理图片懒加载
dishujuan8959的博客
07-12 230
//照片墙图片懒加载 function lazyLondImg() { var lazyImgs = $(".js-lazyLoad"), //需要加载图片 lazyIndex = 0, //加载到的图片index curHeight = document.documentElement.clientHeight, //初始页面高度...
实现图片懒加载的两种方法
Alice_yo的博客
08-11 4301
加载及应用场景 懒加载是一种对网页性能优化的方式,比如当访问一个页面的时候,优先显示可视区域的图片而不一次性加载所有图片,当需要显示时,再发送图片请求,避免打开网页时加载过多资源。 当一个网站的加载图片过多时就需要加载的协助,页面图片多时,在首次载入时一次性加载会耗费时间长,使用懒加载可以使页面加载速度快、减轻服务器的压力、节省流量。 实现的思路:: 给目标元素指定一张占位图,将真实的图片链接存储在自定义属性中(data-), 监听scroll事件,当图片出现在可视区时,将data-src值赋值给src
图片懒加载的原理--三种方法实现
weixin_43872282的博客
03-02 4660
3.设置img的默认src为一张1px*1px,很小很小的gif透明图片(所有的img都用这一张,只会发送一次请求),之所以需要是透明的,是需要透出通过background设置的背景图(一张loading.png,就是一个转圈圈的背景效果图)目前流行的做法是滚动动态加载,也就是懒加载显示在屏幕之外的图片默认不加载,随着页面的滚动,图片进入了显示的范围,则触发图片加载显示。5.等到图片进入视口后,利用js提取data-url的真实图片地址赋值给src属性,就会去发送请求加载图片,真正实现了按需加载
原生js图片懒加载代码实现 @zj-zhangjie
weixin_45616142的博客
09-08 227
原生js图片懒加载是真对项目页面图片过多,加载慢,增强用户体验感的最佳解决方案 什么是懒加载? 懒加载顾名思义突出一个“懒”字,懒字就是拖延的意思,说白就是延迟加载。比如我们进入一个新的页面进行加载的时候,这个页面很长超过了屏幕可视区域的时候,那么懒加载就会优先加载我们可视区域可见的内容,剩余部分是当进入到可视区域之后再进行加载。 为什么要用懒加载? 懒加载是一种优化网页性能的一种方式,它极大的提高了用户的体验。举个栗子:就拿图片来说,一个网站,单个网页的页面上“图片”是构成页面主体的一个极大部分,但是在现
写文章

热门文章

  • js读取txt文件中的内容 29852
  • react文件预览插件react-file-viewer 8511
  • css禁用图片的样式显示 6849
  • 报错:Cannot find module ‘xxx.svg‘ or its corresponding type declarations.ts(2307) 6374
  • CryptoJS加密解密 5914

分类专栏

  • JS 23篇
  • 前端打包下载 1篇
  • 个人总结 14篇
  • 个人工作总结 9篇
  • websocket 1篇
  • nodeJS 4篇
  • 算法 1篇
  • 前端性能优化 3篇
  • es6/7/8/9 2篇
  • webpack 1篇
  • css3 2篇
  • vue2.0 1篇
  • stylus预编译器 1篇
  • reactJs 18篇

最新评论

  • css动画实现鼠标移入图片放大,移出缩小的功能

    cc198787: 这么做发现个问题 鼠标移入后放大 文字会抖动模糊 但是不知道怎么解决

  • MD格式字符串中的超链接改为打开新页面跳转

    2401_84249979: 我不是机器人,兄弟

  • MD格式字符串中的超链接改为打开新页面跳转

    起来改bug: 你个机器人,加什么微信

  • MD格式字符串中的超链接改为打开新页面跳转

    2401_84249979: 能加个微信吗

  • jszip实现多层目录以及目录下文件打包

    起来改bug: 嗯,对的表情包,已修改

最新文章

  • antd样式修改
  • svg画进度条
  • 前端实现边下载文件边上传
2024年12篇
2023年19篇
2022年27篇
2021年19篇
2020年7篇
2019年4篇
2018年2篇
2017年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳坪山网站建设公司国互网如何优化网站宜兴怎么做网站优化网站优化报告北京搜索引擎网站优化济南卫浴行业网站优化推广方案网站推广优化难度商品网站优化效果不好杭州湾新区网站优化哪家强内江定制网站建设优化网站sem优化推广江苏外贸网站优化福州网站优化工具外包甘肃网站优化分析怎样优化好自己的网站荔波优化推广网站金华网站推广优化公司沁阳网站优化找哪家seo网站优化建站公司网站推广优化渠道排名优化是企业通过网站来做吗东莞企业网站排名优化新津区网站seo优化排名通过关键词优化提升企业网站商城类的网站怎么优化内容网站文章内容页优化杨浦区官方网站优化平台化工行业网站优化运营萝岗网站优化推广方案衢州龙游县百度网站优化品牌上海网站搜索优化香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

深圳坪山网站建设公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化