解析预加载显示图片艺术


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过滤数组重复元素的方法
Sep 05 Javascript
JavaScript整除运算函数ceil和floor的区别分析
Apr 14 Javascript
js绘制圆形和矩形的方法
Aug 05 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
Feb 14 Javascript
JavaScript实现选中文字提示新浪微博分享效果
Jun 15 Javascript
JavaScript实现三级联动菜单效果
Aug 16 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
javascript按钮禁用和启用的效果实例代码
Oct 29 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
javaScript产生随机数的用法小结
Apr 21 Javascript
通过实例解析JavaScript for in及for of区别
Jun 15 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
第三节--定义一个类
2006/11/16 PHP
php+AJAX传送中文会导致乱码的问题的解决方法
2008/09/08 PHP
PHP正则验证Email的方法
2015/06/15 PHP
php基础设计模式大全(注册树模式、工厂模式、单列模式)
2015/08/31 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
laravel 实现登陆后返回登陆前的页面方法
2019/10/03 PHP
js 代码优化点滴记录
2012/02/19 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
2013/11/12 Javascript
Javascript中的回调函数和匿名函数的回调示例介绍
2014/05/12 Javascript
详解js实现线段交点的三种算法
2016/08/09 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
js 两数组去除重复数值的实例
2017/12/06 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
解决vue scoped scss 无效的问题
2020/09/04 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python实现zabbix发送短信脚本
2018/09/17 Python
Python3远程监控程序的实现方法
2019/07/15 Python
python实现两个文件夹的同步
2019/08/29 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
2020/03/01 Python
简单的Python人脸识别系统
2020/07/14 Python
python操作redis数据库的三种方法
2020/09/10 Python
降低python版本的操作方法
2020/09/11 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
char型变量中能不能存贮一个中文汉字
2015/07/08 面试题
Java如何支持I18N?
2016/10/31 面试题
业务助理岗位职责
2013/11/18 职场文书
党校培训思想汇报
2013/12/30 职场文书
杭州西湖英语导游词
2015/02/03 职场文书
自主招生专家推荐信
2015/03/26 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android