解析预加载显示图片艺术


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第一天(Jquery学习笔记)
May 11 Javascript
jQuery 数据缓存模块进化史详细介绍
Nov 19 Javascript
extjs中form与grid交互数据(record)的方法
Aug 29 Javascript
JS执行删除前的判断代码
Feb 18 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
Jul 23 Javascript
angularJS提交表单(form)
Feb 09 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
Bootstrap实现的经典栅格布局效果实例【附demo源码】
Mar 30 Javascript
node.js中使用Export和Import的方法
Sep 18 Javascript
Web技术实现移动监测的介绍
Sep 18 Javascript
Koa项目搭建过程详细记录
Apr 12 Javascript
浅谈layui 绑定form submit提交表单的注意事项
Oct 25 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
ThinkPHP连接数据库及主从数据库的设置教程
2014/08/22 PHP
php分页函数完整实例代码
2014/09/22 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP并发多进程处理利器Gearman使用介绍
2016/05/16 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
QUnit jQuery的TDD框架
2010/11/04 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
jQuery 淡出一个图像到另一个图像的实现代码
2013/06/12 Javascript
jquery实现导航固定顶部的效果仿蘑菇街
2014/10/22 Javascript
Underscore.js 1.3.3 中文注释翻译说明
2015/06/25 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
2016/05/27 Javascript
jQuery实现鼠标选中文字后弹出提示窗口效果【附demo源码】
2016/09/05 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
js 点击a标签 获取a的自定义属性方法
2016/11/21 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
javascript利用键盘控制小方块的移动
2020/04/20 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
Gauss-Seidel迭代算法的Python实现详解
2019/06/29 Python
Python 获取命令行参数内容及参数个数的实例
2019/12/20 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
pytorch加载自己的图像数据集实例
2020/07/07 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
工作求职自荐信
2014/06/13 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
终止劳动合同协议书
2014/10/05 职场文书
绿里奇迹观后感
2015/06/15 职场文书
商场广播稿范文
2015/08/19 职场文书
企业法人任命书
2015/09/21 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
Python+Pillow+Pytesseract实现验证码识别
2022/05/11 Python