解析预加载显示图片艺术


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 相关文章推荐
js实现漂浮回顶部按钮实例
May 06 Javascript
JavaScript中getUTCSeconds()方法的使用详解
Jun 11 Javascript
JavaScript中setFullYear()方法的使用详解
Jun 11 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
JS组件Form表单验证神器BootstrapValidator
Jan 26 Javascript
JS+HTML5 FileReader对象用法示例
Apr 07 Javascript
jQuery完成表单验证的实例代码(纯代码)
Sep 30 jQuery
JavaScript实现二叉树定义、遍历及查找的方法详解
Dec 20 Javascript
MVVM框架下实现分页功能示例
Jun 14 Javascript
js实现左右两侧浮动广告
Jul 09 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
JS实现的新闻列表自动滚动效果示例
Jan 30 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
CI框架源码阅读,系统常量文件constants.php的配置
2013/02/28 PHP
PHP中如何调用webservice的实例参考
2013/04/25 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
php模板引擎技术简单实现
2016/03/15 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
2017/05/02 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
jquery下动态显示jqGrid以及jqGrid的属性设置容易出现问题的解决方法
2010/10/22 Javascript
JavaScript通过字典进行字符串翻译转换的方法
2015/03/19 Javascript
AngularJS入门教程之Select(选择框)详解
2016/07/27 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
微信小程序checkbox组件使用详解
2018/01/31 Javascript
Vue组件间通信 Vuex的用法解析
2019/08/05 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
2020/07/22 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
win7上python2.7连接mysql数据库的方法
2017/01/14 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
树莓派使用python-librtmp实现rtmp推流h264的方法
2019/07/22 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
pycharm 激活码及使用方式的详细教程
2020/05/12 Python
Python用类实现扑克牌发牌的示例代码
2020/06/01 Python
css3的transition属性详解
2014/12/15 HTML / CSS
ProBikeKit美国官网:自行车套件,跑步和铁人三项套件
2016/10/13 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
制药工程专业个人求职自荐信
2014/01/25 职场文书
职业培训师职业生涯规划
2014/02/18 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
西双版纳导游词
2015/02/03 职场文书
2015大学生求职信范文
2015/03/20 职场文书
小时代观后感
2015/06/10 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书