解析预加载显示图片艺术


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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
jquery 可拖拽的窗体控件实现代码
Mar 21 Javascript
jQuery + Flex 通过拖拽方式动态改变图片的代码
Aug 03 Javascript
jquery $.getJSON()跨域请求
Dec 21 Javascript
JS保留两位小数,多位小数的示例代码
Jan 07 Javascript
jquery中show()、hide()和toggle()用法实例
Jan 15 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
详解Webpack多环境代码打包的方法
Aug 03 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
vue 使用高德地图vue-amap组件过程解析
Sep 07 Javascript
weui中的picker使用js进行动态绑定数据问题
Nov 06 Javascript
Vue SPA 首屏优化方案
Feb 26 Vue.js
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中处理模拟rewrite 效果
2006/12/09 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP优于Node.js的五大理由分享
2012/09/15 PHP
php设计模式之观察者模式的应用详解
2013/05/21 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
php的array数组和使用实例简明教程(容易理解)
2014/03/20 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
简单实用的PHP文本缓存类实例
2019/03/22 PHP
jQuery boxy弹出层插件中文演示及使用讲解
2011/02/24 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
javascript手风琴下拉菜单实现代码
2015/11/12 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
Jquery EasyUI实现treegrid上显示checkbox并取选定值的方法
2016/04/29 Javascript
AngularJS表单详解及示例代码
2016/08/17 Javascript
js return返回多个值,通过对象的属性访问方法
2017/02/21 Javascript
详解Angular6.0使用路由步骤(共7步)
2018/06/29 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Vue中对iframe实现keep alive无刷新的方法
2019/07/23 Javascript
解决vue项目router切换太慢问题
2020/07/19 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
Python中__call__用法实例
2014/08/29 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
Python的UTC时间转换讲解
2019/02/26 Python
Python更新所有已安装包的操作
2020/02/13 Python
基于FME使用Python过程图解
2020/05/13 Python
python 5个实用的技巧
2020/09/27 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
大班亲子运动会方案
2014/06/10 职场文书
初中生散播谣言检讨书
2014/11/17 职场文书
我的兄弟姐妹观后感
2015/06/15 职场文书
创业计划书之儿童理发店
2019/09/27 职场文书
Python标准库pathlib操作目录和文件
2021/11/20 Python