预加载显示图片的艺术

前言

一般情况下网页中的图片都是随文档流依次加载的,什么时候用到则什么时候加载,但是有些时候这样的加载方式往往会影响用户体验,比如鼠标hover变换背景图片的时候,只有鼠标移入才会对变换的图片进行加载,这样就可能会出现片刻的加载空白现象。

为了在必要的时候增加用户体验,提高网页的交互逼格,这里不得不介绍下图片预加载的艺术。

那么什么是图片预加载呢?

道理很简单,虽然某些图片一时半会我们用不到,但是为了避免使用时出现的措手不及的现象,我们还是需要乖乖地把它们先准备好,在某些时候悄悄地把它们加载进来,以防一时之需。

方法

ok,那么怎么才能实现这样的功能?

其实很简单,这里就介绍一个jquery库的preLoadImages()函数,使用这个函数就可以轻松实现图片预加载。代码如下:

$(function(){ 
  var cache=[];

  //编写一个预加载图片的jQuery函数
   $.preLoadImages = function(){

      //获取函数体的参数个数 
      var args_len = arguments.length;

     // 循环参数个数,创建img元素 
     for(var i = 0; i < args_len; i++) { 
          var cacheImage = document.createElement('img');

          //指定img元素的src属性为数组元素的值 
          cacheImge.src = arguments[i];

          //将HTML元素加入到数组中 
          cache.push(cacheImage);
      }
    }
})

只要通过下面一步就可以完成函数的调用,如下:

//预加载图片
$.preLoadImages('images/sample1.jpg', 'images/sample2.jpg', 'images/sample3.jpg');

其中的

‘images/sample1.jpg’,‘images/sample2.jpg’,‘images/sample3.jpg’

就是图片的路径,预加载多张图片可以用逗号分隔,

这样在网页上的任何位置引用图片时,将从缓存中获取所需的图片,从而提升用户的体验,使网站获得更好的流畅性。

这里还没完,有人可能会问万一图片路径失效加载出错了咋办?

再教你一招,我们有planB,针对出错的图片显示另一张我们事先准备好的图片,用这张图片来替换所有无法显示的图片,方法也十分简单,代码如下:

  $(function(){ 
      $("img").error(function(){
            $(this).prop("src","images/planB.jpg");
       });
  });

这下我们做的万无一失了,这里主要介绍下error()事件,它的定义和用法为:

  • 当元素遇到错误(没有正确载入)时,发生 error 事件。
  • error() 方法触发 error 事件,或规定当发生 error 事件时运行的函数。

至此我们简单的图片预加载的方法就介绍完了。

结语

这里我们需要区分图片预加载和懒加载的区别。两者的行为是相反的,一个是提前加载,一个是迟缓甚至不加载。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,860评论 25 709
  • 笔记: 1.for结构:固定次数循环、应用率高 2.break:跳出循环 continue:跳过循环体中剩余语句...
    LesterYu阅读 298评论 3 1
  • 塔木德产品怎么样?汽车烧机油怎么办?为什么会烧机油? 塔木德R+SM+WM+KR烧机油组合专业解决汽车烧机油!ta...
    塔木德阅读 218评论 0 0
  • 感恩三个人 感恩业力伙伴、我的朋友喇梅和我做四步骤,感恩她用佛陀般的慈悲,通过身语意来帮助我,感恩金刚智慧之路上有...
    晶晶_37cd阅读 331评论 0 0
  • 近期一悟 1、“剑禅合一”,人要在某一细分领域达到较大成就,需要有与之相应的强大哲学思想、信仰支撑。 2、很多大师...
    人为自身立法阅读 211评论 0 0