解析预加载显示图片艺术


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 相关文章推荐
20个非常有用的PHP类库 加速php开发
Jan 15 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
Aug 14 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
Angular组件化管理实现方法分析
Mar 17 Javascript
JS使用插件cryptojs进行加密解密数据实例
May 11 Javascript
深入浅出webpack之externals的使用
Dec 04 Javascript
jQuery中库的引用方法
Jan 06 jQuery
Node.js引入UIBootstrap的方法示例
May 11 Javascript
使用Vue CLI创建typescript项目的方法
Aug 09 Javascript
Vue+Node实现的商城用户管理功能示例
Dec 23 Javascript
node 版本切换的实现
Feb 02 Javascript
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
Feb 21 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
基于HTTP长连接的"服务器推"技术的php 简易聊天室
2009/10/31 PHP
基于initPHP的框架介绍
2013/04/18 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
php中print(),print_r(),echo()的区别详解
2014/12/01 PHP
php使用Jpgraph绘制柱形图的方法
2015/06/10 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
javascript中onclick(this)用法介绍
2013/04/19 Javascript
基于jquery实现的文字淡入淡出效果
2013/11/14 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
jQuery中unbind()方法用法实例
2015/01/19 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
深入理解vue路由的使用
2017/03/24 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
JavaScript中reduce()的5个基本用法示例
2020/07/19 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[00:42]《辉夜杯》—职业组预选赛12月3日15点 正式打响
2015/12/03 DOTA
python中精确输出JSON浮点数的方法
2014/04/18 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
python中reduce()函数的使用方法示例
2017/09/29 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
如何不用安装python就能在.NET里调用Python库
2019/07/12 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
PyTorch中clone()、detach()及相关扩展详解
2020/12/09 Python
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
Monnier Frères美国官网:法国知名奢侈品网站
2016/11/22 全球购物
美国最大点评网站:Yelp
2018/02/14 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
学雷锋月活动总结
2014/04/25 职场文书
信访维稳承诺书
2015/05/04 职场文书
初中思品教学反思
2016/02/20 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫