IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    jquery 图片预加载与进度条同步的实现

    eason发表于 2014-11-28 07:57:01
    love 0

    你也许已经在 Youtube 上看过了那道红色激光脉冲,它会在你切换页面时出现。其实许多移动浏览器的进度条都是这个样式,但是在网页上实现可不多见。不过,有了 NProgress 这个 jQuery 插件,你也可以轻松实现!

    Youtube 上的加载进度条

    安装

    依赖于 jQuery (1.8版本及以上),添加 nprogress.js 和 nprogress.css 到你的项目中。

    HTML代码:

    
    
    

    CSS代码:

    /* 导入进度条相关CSS */
    
    @import url('http://cdn.gbtags.com/nprogress/0.1.3/nprogress.min.css');
    
    /* 基础CSS */
    body{
      padding:0;
      margin:50px 0;
    }
    
    section{  
      padding:0;
      margin:0;
    }
    
    /* 容器中图片CSS */
    section img{
      width: 50%;
      padding:0;
      margin:0;
      float:left;
      display:none;
    }
    

    JS代码:

    /* 随机生成颜色方法/参考此代码:http://www.gbtags.com/gb/rtreplayerpreview/163.htm */
    function colorGenerator() {
      var letters = '0123456789ABCDEF'.split(''), color = '';
      for (var i = 0; i < 6; i++ ) {
        color += letters[Math.floor(Math.random() * 16)];
      }
      return color;
    }
    
    /* 生成图片并且添加到section元素里 */
    function imgGenerator(num){
      for(var i=0;i');
      }
    }
    
    imgGenerator(100);//这里添加100个“来图”生成图片
    
    var completed = 0,
        total = $('img').length;
    
    NProgress.start(); //此方法将启动进度条
    
    /* 接下来我们处理图片预加载,并且和进度有序的组织起来 */
    
    $('section').imagesLoaded().done(function(instance){
      NProgress.done(); //这里调用进度条指示完成
    }).progress(function(instance, image){
      completed++; //添加计数器
      var imgprogress = completed/total; //生成进度数值
      NProgress.set(imgprogress); //每次加载完毕一张图片,则设置进度为新值,使用.set方法
      $(image.img).fadeIn(1500); //每一张图片完成加载后,则淡入显示出来
    });
    



沪ICP备19023445号-2号
友情链接