解析预加载显示图片艺术


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 相关文章推荐
LBS blog sql注射漏洞[All version]-官方已有补丁
Aug 26 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
Apr 23 Javascript
Jquery同辈元素选中/未选中效果的实例代码
Aug 01 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
jQuery选择器源码解读(三):tokenize方法
Mar 31 Javascript
Web程序员必备的7个JavaScript函数
Jun 14 Javascript
微信小程序 wxapp导航 navigator详解
Oct 31 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
Nov 21 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
Jul 23 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
Nov 02 Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 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
php通用防注入程序 推荐
2011/02/26 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
php实现遍历目录并删除指定文件中指定内容
2015/01/21 PHP
javascript 播放器 控制
2007/01/22 Javascript
简单三步,搞掂内存泄漏
2007/03/10 Javascript
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
Javascript实现图片轮播效果(一)让图片跳动起来
2016/02/17 Javascript
网页中JS函数自动执行常用三种方法
2016/03/30 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
微信小程序开发之改变data中数组或对象的某一属性值
2018/07/05 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
python实现自动重启本程序的方法
2015/07/09 Python
Python标准库之collections包的使用教程
2017/04/27 Python
numpy使用fromstring创建矩阵的实例
2018/06/15 Python
Python 使用Numpy对矩阵进行转置的方法
2019/01/28 Python
python程序控制NAO机器人行走
2019/04/29 Python
python字典的setdefault的巧妙用法
2019/08/07 Python
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
实习自我鉴定
2013/12/15 职场文书
公司保密承诺书
2014/03/27 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
MySQL 视图(View)原理解析
2021/05/19 MySQL
React forwardRef的使用方法及注意点
2021/06/13 Javascript
Pygame Event事件模块的详细示例
2021/11/17 Python
Redis keys命令的具体使用
2022/06/05 Redis
Redis唯一ID生成器的实现
2022/07/07 Redis