解析预加载显示图片艺术


Posted in Javascript onDecember 05, 2016

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

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

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

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

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

其实很简单啦,

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

$(function(){
  var cache=[];
  //编写一个预加载图片的jQuery函数
  $.preLoadImages = function(){
    //获取函数体的参数个数
    var args_len = arguments.length;
    //反向循环参数个数,创建img元素
    for(var i = args_len ; i--;) {
      var cacheImage = document.createElement(‘img');
      //指定img元素的src属性为数组元素的值
      cacheImge.src = arguments[i];
      //将HTML元素加入到数组中
      cache.push(cacheImage);
    }  
  }  
});

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

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

其中的

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

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

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

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

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

$(function(){
  $("img").error(function(){
     $(this).prop("src","images/planB.jpg");
  });
});

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

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

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

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

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

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

以上就是本文的全部内容,希望对大家有所帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
Jquery下的26个实用小技巧(jQuery tips, tricks & solutions)
Mar 01 Javascript
js日期联动示例
May 02 Javascript
javascript中expression的用法整理
May 13 Javascript
javascript快速排序算法详解
Sep 17 Javascript
node.js中的querystring.stringify方法使用说明
Dec 10 Javascript
在JavaScript中操作时间之getMonth()方法的使用
Jun 10 Javascript
模仿password输入框的实现代码
Jun 07 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
JavaScript变量作用域_动力节点Java学院整理
Jun 27 Javascript
详解webpack + vue + node 打造单页面(入门篇)
Sep 23 Javascript
详解微信小程序Page中data数据操作和函数调用
Sep 27 Javascript
浅谈React碰到v-if
Nov 04 Javascript
JS限定手机版中图片大小随分辨率自动调整的方法
Dec 05 #Javascript
简单几步实现返回顶部效果
Dec 05 #Javascript
jQGrid Table操作列中点击【操作】按钮弹出按钮层的实现代码
Dec 05 #Javascript
jquery删除数组中重复元素
Dec 05 #Javascript
jQuery动态增减行的实例代码解析(推荐)
Dec 05 #Javascript
DOM 事件的深入浅出(二)
Dec 05 #Javascript
vue.js指令v-model实现方法
Dec 05 #Javascript
You might like
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
PHP和JAVA中的重载(overload)和覆盖(override) 介绍
2012/03/01 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
Yii实现简单分页的方法
2016/04/29 PHP
简单谈谈PHP中的trait
2017/02/25 PHP
PHP设计模式之适配器模式原理与用法分析
2018/04/25 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
js中通过split函数分割字符串成数组小例子
2013/09/21 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
2013/10/18 Javascript
escape编码与unescape解码汉字出现乱码的解决方法
2014/07/02 Javascript
jQuery中:lt选择器用法实例
2014/12/29 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
初步了解javascript面向对象
2015/11/09 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
JavaScript生成验证码并实现验证功能
2016/09/24 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
详解vue-cli与webpack结合如何处理静态资源
2017/09/19 Javascript
在vue项目中集成graphql(vue-ApolloClient)
2018/09/08 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
[08:53]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS 选手采访
2021/03/11 DOTA
scrapy爬虫实例分享
2017/12/28 Python
Python学生成绩管理系统简洁版
2020/04/05 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python参数传递实现过程及原理详解
2020/05/14 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
大学生在校学习的自我评价
2014/02/18 职场文书
暑假安全教育广播稿
2014/09/10 职场文书
专职安全员岗位职责
2015/04/11 职场文书
《迟到》教学反思
2016/02/24 职场文书
简历上的自我评价,该怎么写呢?
2019/06/13 职场文书