一般情况下网页中的图片都是随文档流依次加载的,什么时候用到则什么时候加载,但是有些时候这样的加载方式往往会影响用户体验,比如鼠标hover变换背景图片的时候,只有鼠标移入才会对变换的图片进行加载,这样就可能会出现片刻的加载空白现象;又比如图片显示后隐藏再显示网站内容等也是同样的道理。

为了在必要的时候增加用户体验,提高网页的交互逼格,这里不得不介绍下图片预加载的艺术啦。

那么什么是图片预加载呢?

道理很简单啦,虽然某些图片一时半会我用不到,但是为了避免使用时出现的措手不及的现象,我还是乖乖把它们先准备好,在某些时候悄悄的把它们加载进来,以防一时之需。

ok,那么怎么才能实现这样的功能呢?

其实很简单啦,

这里呢就介绍一个jquery库的preLoadImages()函数,使用这个函数呢就可以轻松实现图片预加载了,下面来一睹为快吧,代码如下:

 1 $(function(){2     var cache=[];3     //编写一个预加载图片的jQuery函数4     $.preLoadImages = function(){5         //获取函数体的参数个数6         var args_len = arguments.length;7         //反向循环参数个数,创建img元素8         for(var i = args_len ; i--;) {9             var cacheImage = document.createElement(‘img’);
10             //指定img元素的src属性为数组元素的值
11             cacheImge.src = arguments[i];
12             //将HTML元素加入到数组中
13             cache.push(cacheImage);
14         }
15     }
16 });

ok,注释都写的十分清楚了吧,还是没看懂?好吧那么我们先不管代码了,其实只要通过下面一步就可以完成函数的调用,如下:

1 //预加载图片
2 $.preLoadImages('images/sample1.jpg’,’images/sample2.jpg’,'images/sample3.jpg’);

其中的

'images/sample1.jpg’,’images/sample2.jpg’,'images/sample3.jpg’

就是图片的路径,预加载多张图片就用逗号分隔啦,

这样在网页上的任何位置引用图片时,将从缓存中获取所需的图片,从而提升用户的体验,使网站获得更好的流畅性哦。

那么还没完,有人可能会问万一图片路径失效加载出错了咋办?

呵呵,再教你一招,出错就出错了呗,我们有plan B,针对出错的图片显示另一张我们事先准备好的图片,用这张图片来替换所有无法显示的图片,那么怎样才能做到呢,方法也十分简单,代码如下:

1 $(function(){
2     $("img").error(function(){
3         $(this).prop("src","images/planB.jpg");
4     });
5 });

搞定,这下我们做的万无一失了,

这里主要介绍下error()事件,它的定义和用法为:

  当元素遇到错误(没有正确载入)时,发生 error 事件。

  error() 方法触发 error 事件,或规定当发生 error 事件时运行的函数。

很好理解吧,至此我们的图片预加载的方法就介绍完了。

本文部分代码及写作思路参考于《超实用的JQuery代码段》一书,欢迎大家积极尝试、评论及指正。

预加载显示图片的艺术相关推荐

  1. 图片预加载与图片懒加载

    图片预加载与图片懒加载 图片预加载 图片预加载主要是针对非icon类图片. 加载快,有良好的用户体验. 提前加载图片,当用户需要查看时可直接从本地缓存中渲染.可能因为图片很大,浏览器显示出它会用很长的 ...

  2. 微信H5资源预加载(图片、字体)

    一.背景 微信活动H5页面的特点之一就是资源多(图.字体.音频等),动不动就几十兆.庞大的资源量很可能导致页面不流畅.如下图,因为背景图还没加载完,进入第二页时会有一瞬间"白屏". ...

  3. thinkphp+ajax无刷新分页并加载显示图片

    2019独角兽企业重金招聘Python工程师标准>>> 最近自己用thinkphp和bootstrap做一个小站点,在用到ajax与后台数据库交互实现无刷新分页时,因为我需要返回的数 ...

  4. img预加载获取图片大小方法

    img预加载获取图片大小方法 // 更新: // 05.27: 1.保证回调执行顺序:error > ready > load:2.回调函数this指向img本身 // 04-02: 1. ...

  5. Axure教程:中继器如何加载显示图片

    编辑导语:在原型设计中,很多场景会应用到"中继器"这个元件.那么中继器如何加载显示图片的操作?很多新手都会无从下手.本文作者详细讲解了中继器加载显示图片的方法,供你学习. 一.元件 ...

  6. mfc cimage加载显示图片_在微信小程序里实现图片预加载组件

    网页中的图片预加载 我们知道在 Web 页面中实现图片的预加载其实很简单,通常的做法是在 JS 中使用 Image 对象即可,代码大致如下 var image = new Image() image. ...

  7. HtmlNinja-图片预加载以及图片元素img的complete属性

    昨天在tutsplus.com上看到一篇不错的文章(http://net.tutsplus.com/tutorials/javascript-ajax/how-to-create-an-awesome ...

  8. 小程序实现图片预加载(图片延迟加载)

    这几天搞百度小程序,对接的网站需要展示大量图片,并且图片都是高清图片,因为要同步支持pc和手机站,在开发者工具中测试的时候,图片都是瞬间加载,因此感觉不出什么,但是真机预览的时候,特别是4G情况下,会 ...

  9. 图片预加载、图片延迟加载插件

    网站上经常会有这种现象. 1.带有图片的列表页面图片没有加载过来时候,页面排版是乱的. 2.图片加载失败后显示一个裂痕玻璃图片 并不友好 为了解决这些现象 我自己封装了了个插件: /*图片加载未完成显 ...

最新文章

  1. Python,OpenCV鼠标事件进行矩形、圆形的绘制(随机颜色、随机半径)
  2. 马斯克炮轰元宇宙与Web3.0:“我不觉得有人会成天把屏幕绑在脑袋上”
  3. python基础知识面试题-python基础知识的重点面试题
  4. 世界农业发展史-国际农民丰收节贸易会:人类的发展史
  5. JavaScript中setAttribute用法
  6. disconf(二):服务端使用总结
  7. 03Prism WPF 入门实战 - Region
  8. java局部内部类 final_Java的局部内部类以及final类型的参数和变量
  9. 阿里云飞天洛神2.0:开放弹性的云网络NFV平台
  10. 《2018区块链整体架构及应用》(PPT全文)
  11. Windows 7下面安装VMware、Windows XP
  12. word流程图整体怎么拆分_word流程图-不会做流程图?这三种方法超级简单!
  13. Linux下面DNS主、辅、转、子域及其委派实验手册
  14. python3开发环境_python3开发环境安装
  15. 最好用的PDF软件汇总
  16. 使用URLOS在linux系统中极速部署NFS共享存储服务
  17. 程序员面试中最常见的27个问题,拿走不谢
  18. 实习日记——工程配置
  19. vue3子组件调用父组件的方法
  20. 计算机启动相机代码,如何在win7系统中启动相机

热门文章

  1. OpenGL clipdistance剪辑距离实例
  2. C++使用数组实现queue之一(附完整源码)
  3. c++解释模式interpreter
  4. 计算机网络传输层和应用层作业,计算机网络传输层作业.doc
  5. 1.16.Flink Window和Time详解、TimeWindow的应用、Window聚合分类之全量聚合、全量聚合状态变化过程-求最大值、Time介绍、EventTime和Watermarks等
  6. spark sql基本使用方法介绍(转载)
  7. Oracle中的两种验证方式:操作系统验证和密码文件验证,通过操作系统验证的方式解决客户端登录不了数据的问题
  8. 远程连接SQL Server2008的设置方式
  9. MariaDB 窗口函数row_number、rank介绍
  10. kvm直通sata_基于KVM的SRIOV直通配置及性能测试