解析预加载显示图片艺术


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 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
js 获取屏幕各种宽高的方法(浏览器兼容)
May 15 Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
Dec 18 Javascript
基于Bootstrap的Metronic框架实现条码和二维码的生成及打印处理操作
Aug 29 Javascript
Canvas实现动态的雪花效果
Feb 13 Javascript
vue项目中v-model父子组件通信的实现详解
Dec 10 Javascript
使用JavaScript解析URL的方法示例
Mar 01 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
小程序实现锚点滑动效果
Sep 23 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
vue+elementUI 实现内容区域高度自适应的示例
Sep 26 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
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP大转盘中奖概率算法实例
2014/10/21 PHP
PHP5.2下preg_replace函数的问题
2015/05/08 PHP
PHP SplObjectStorage使用实例
2015/05/12 PHP
PHP正则验证Email的方法
2015/06/15 PHP
Ubuntu VPS中wordpress网站打开时提示”建立数据库连接错误”的解决办法
2016/11/03 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
Javascript的setTimeout()使用闭包特性时需要注意的问题
2014/09/23 Javascript
jquery 中ajax执行的优先级
2015/06/22 Javascript
JS实现表单中checkbox对勾选中增加边框显示效果
2015/08/21 Javascript
Bootstrap每天必学之按钮
2015/11/26 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
node.js路径处理方法以及绝对路径详解
2021/03/04 Javascript
jQuery网页定位导航特效实现方法
2016/12/19 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
SVG实现时钟效果
2018/07/17 Javascript
Python面向对象编程基础解析(一)
2017/10/26 Python
用Python实现KNN分类算法
2017/12/22 Python
python实现五子棋小程序
2019/06/18 Python
Python 给定的经纬度标注在地图上的实现方法
2019/07/05 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
Python使用re模块验证危险字符
2020/05/21 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
python实现图书馆抢座(自动预约)功能的示例代码
2020/09/29 Python
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
婚礼新郎父母答谢词
2014/01/16 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
全国法院系统开展党的群众路线教育实践活动综述(全文)
2014/10/25 职场文书
优秀党员事迹材料
2014/12/18 职场文书
Django路由层如何获取正确的url
2021/07/15 Python