`
sevenCong
  • 浏览: 315 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

前端图片延迟加载详细讲解

阅读更多
 

        原本是打算昨天昨天下午的时候就写一篇关于前端图片延迟加载的详细技术的博客的,没想到下午公司项目出现了一些问题,所以一直在改代码进行调试,今天白天一整天又在外面跑,回来已经傍晚了,刚吃完饭,就想着赶紧补上,这样很多不懂这方面具体实现的小伙伴们也能早点学习经验。

         前端页面的用户体验对于一个网站来说是至关重要的,我们在访问一些图片量比较大的网站的时候,往往会有这样的感受:显示在我电脑屏幕可视区域的图片总是不能及时的刷出来,这就造成了对于一些没有什么耐心的用户而言,他们就不愿意多等下去,索性直接关闭了网站去看其他的网站,这就使得本网站的用户量的流失,这往往是一个网站最不愿意看到的情况,那么对于这样的情况而言,开发者们不断的努力,很快就想到了解决的方案,让在可视区域的图片立即加载进来,而让不在可视区域并且需要通过滚动条进行滚动显示的图片在图片滚动到可视区域内再显示出来,这就比一次性把所有的图片资源加载进来从而造成图片刷新较慢的用户体验好的多的多。

        那么,图片延迟加载的技术具体如何实现呢?下面来做详细的介绍:

        首先,定义图片为三列,一共有5行,具体代码如下:                 

       里面用到的bootstrap的布局技术(当然,这不是重点),请看img标签中的src,一开始我们并没有给它具体的图片的资源路径,而是自己定义了一个属性 x-src,该属性的值是图片图片的资源路径,每一行的img都是如此,接下来,当页面载入的时候,我们使用jquery(当然,你想javascript原生的代码也可以,我这里只是为了省时间而已)来循环遍历每一个img,判断每一个图片是否在当前可视区域内,是则显示图片,否则稍后处理,这里需要知道三个数据:

             注:因为我所写的是当图片的一半进入的浏览器的可视区域内才将这张图片进行加载,所以需要第三个数据,这个看个人的需求是什么,       如果你的需求是图片只要已进入可视区域内就加载,可直接忽略第三个数据!!!!

                                   1:浏览器可视区域的高度

                                   2:图片相对于文档的偏移量(这里只需要高度上的偏移量)

                                   3:图片元素本身的高度

             如果图片先对于文档的偏移量+图片元素本身的高度的一半    <  浏览器可视区域的高度,即表明图片已经有一半进入的可视区域了,那么我就应该要把这张图片加载进来了,可是img标签的src是为空的,x-src的值才是图片的资源路径,这个时候就需要用jquery将img 标签的x-src值传给src,从而将图片加载进来,具体实现代码如下:

                    

             具体的效果如下:

                      

           你可以在控制台看到,虽然我们有5行图片,每行有3列,但加载进来的图片只有第一列(图片高度有超出一半的img才会加载图片的资源进来),其他的都没有加载进来,这就使得图片的刷新会很快出现效果,那么接下来,用户需要看到更多的图片,这个时候需要进行滚动条往下滚动,去刷新更多的图片,那么这个时候我们除了上述的3个数据之外,还需要知道当前滚动条滚动的距离,如果:

                              图片先对于文档的偏移量+图片元素本身的高度的一半    <  浏览器可视区域的高度  + 当前滚动条滚动的距离,那么表明当前图片已经在可视区域内,并且图片有一半以上的高度是在可视区域内,那么将图片进行加载进来,具体代码如下:

                    

           具体效果如下:

                    

          在控制台你可以看到,随着滚动条的滚动,加载进来的图片由原来的三张变成了现在的六张,滚动条不断的往下滚动,图片就会不断的加载进来,从而得到更好的用户体验。

          这就是图片延迟加载的具体实现,是不是觉得图片的炫酷,如果你想自己看下具体的实现效果,可以点击我的网址进行查看:

                                    http://meichao.sinaapp.com/show.html

          如果还有什么不明白的,可以直接QQ联系本人:447247261                    欢迎大家一起相互探讨,相互进步

分享到:
评论

相关推荐

    前端实现图片懒加载url

    前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现图片懒加载url前端实现...

    JS实现图片延迟加载(缓冲),非常实用

    JS实现图片延迟加载(缓冲),非常实用.注意:页面上如果有滑动门等元素,可能显示不全。因情况需要调一下。总体来说不错!

    js页面图片延迟加载.zip

    js页面图片延迟加载.zip

    jquery.lazyload图片预加载效果 jquery预加载

    jquery.lazyload图片预加载 调用简单 内有实例

    layui图片懒加载.txt

    图片懒加载所需js+css+内容,解决图片懒加载失效问题。

    图片延迟加载

    思路:1、首先给所有需要延迟加载的图片,添加一个默认的图片(2.jpg),让页面刚开始加载时只加载一张图片  2、当图片显示在可视区域时,把data-original的值赋给src属性  3、首页刚进入页面时有些图片就显示在...

    大图片分块加载JS代码

    大图片分块加载JS代码

    城市三级联动js前端显示动态加载

    javascript实现城市三级联动,js前端显示,动态加载数据

    在图片加载完毕前js获取图片长宽尺寸

    目前我们常用的获取图片实际宽度高度的方法,要么是在DOM中写入,要么就是等图片加载完毕后才开始获取,用户体验极其不好,今天特意整理一个办法,可以让javascript在html加载完毕后就可以立即获取img文件的头数据...

    js前端图片预览插件

    使用canvas实现的,前端图片预览插件,提供基本的放大、缩小、移动、旋转、翻转功能,由于JS加载图片的原因,双击直接运行访问不到图片,需将代码部署在服务器中才可。

    简单易用的图片延迟加载效果

    代码简单易懂,实现效果很棒,我已经实验过了,非常不错哦,解决前端小伙伴们的烦恼

    JS实现图片加载模糊到清晰

    使用picasa的时候,注意到它首先是显示模糊的图片,然后图片突然变得清晰,这样做有一定的好处&mdash;&mdash;picasa的图片翻页是用javascript实现的,如果直接载入大图,中间势必会有个空档,用户在这中间会感觉很...

    web端炫酷的30个前端动态加载页

    WEB包含30个前端加载效果页面,动态执行加载,用于加载图片,懒加载等等

    前端图片压缩base64后台还原图片

    前端图片压缩base64后台还原图片,后台工具类,前端代码。部分代码来自脚本之家。

    前端页面图片瀑布流展示

    前端图片展示,采用瀑布流方式,可分步加载图片。可点击加载更多来加载其余图片。

    前端模块加载解决方案modJS.zip

    modJS 是一套的前端模块加载解决方案。与传统的模块加载相比,modJS 会根据产品实际使用场景,自动选择一种相应的方案,使最终的实现非常轻量简洁。 使用 模块的定义 modJS是一个精简版的AMD/CMD规范,并不完全...

    【Typecho插件-前端-加载动画】SakuraLoad

    开发Blog:https://mdzz.pro 主要用途:Typecho插件,用于在页面未加载完时提供一个加载动画,可以选择预置圆圈或者自己添加动画,可以防止用户在异步加载资源未加载好时触摸页面。

    前端图片懒加载(lazyload)的实现方法(提高用户体验)

    图片懒加载又称图片延时加载、惰性加载,即在用户需要使用图片的时候加载,这样可以减少请求,节省带宽,提高页面加载速度,相对的,也能减少服务器压力。 惰性加载是程序人性化的一种体现,提高用户体验,防止一次...

    延迟加载插件

    利用此插件,可以轻松实现延迟加载。本人亲测。

    React前端延迟加载

    如果进行编辑,页面将重新加载。 您还将在控制台中看到任何棉绒错误。 npm test 在交互式监视模式下启动测试运行程序。 有关更多信息,请参见关于的部分。 npm run build 构建生产到应用程序build文件夹。 它在...

Global site tag (gtag.js) - Google Analytics