JS实现图片预加载之无序预加载功能代码

 更新时间:2017年05月12日 14:22:01   作者:Glunefish (咕噜鱼)  
这篇文章主要介绍了JS实现图片预加载之无序预加载功能代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下

图片预加载之无序预加载的效果图如下所示,如果大家感觉不错,请参考实现代码。

具体代码如下所示:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>PreLoading</title>
  <style>
    *{margin:0; padding:0; border:none; outline:0; text-decoration:none;}
    html,body,.box{width:100%; height:100%;}
    .box{display:none;}
    #img{width:90%; height:90%; margin:2vh auto 0; display:block; box-shadow:0 0 10px gray;}
    .box .btns{width:140px; height:40px; display:block; margin:20px auto;}
    .box .btns .btn{width:60px; height:40px; display:block; border:1px gray solid; background-color:#ccc; text-align:center; line-height:40px; float:left;}
    .box .btns .btn:nth-of-type(2){margin-left:16px;}
    .load{width:100%; height:100%; display:block; font-size:60px; font-family:"微软雅黑"; color:#ccc; text-align:center; line-height:100vh; position:fixed;}
  </style>
</head>
<body>
  <div class="box">
    <img id="img" src="" alt="pic">
    <p class="btns"><a href="javascript:" rel="external nofollow" rel="external nofollow" class="btn">prev</a><a href="javascript:" rel="external nofollow" rel="external nofollow" class="btn">next</a></p>
  </div>
  <p class="load">0%</p>
  <script type="text/javascript">
    var imgs = ['http://down.699pic.com/photo/50036/7661.jpg?_upt=da51378d1494571758&_upd=500367661.jpg',
          'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/0F/ChMkJljskIqIPX9bAAMPyuIn8DcAAbj8QB7XpYAAw_i343.jpg',
          'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/09/0F/ChMkJljskLeIaW-JAAIudN_yqvgAAbj8gDQO5AAAi6M64.jpeg',
          'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/0F/08/ChMkJlauzISIH0uXAARUHuJLVX8AAH8-gHu6zsABFQ2166.jpg',
          'http://desk.fd.zol-img.com.cn/t_s1920x1080c5/g5/M00/0F/08/ChMkJlauzISIIL5TAAObxg4-XeUAAH8-gHzP3EAA5ve000.jpg'];
    // 绑定按钮事件
    var btns = document.getElementsByClassName('btn'),
      img = document.getElementById('img'),
      index = 0;
    for(var i=0;i<btns.length;i++){
      btns[i].onclick = function(){
        if(this.innerHTML === 'next'){
          index = Math.min(++index , imgs.length-1);
          img.setAttribute('src',imgs[index]);
        }
        if(this.innerHTML === 'prev'){
          index = Math.max(--index , 0);
          img.setAttribute('src',imgs[index]);
        }
      }
    }
    // 计数变量
    var count = 0,
      load = document.getElementsByClassName('load')[0],
      box = document.getElementsByClassName('box')[0];
    // 无序预加载
    for(var i=0;i<imgs.length;i++){
      (function(i){
        var imgObj = new Image();
      imgObj.onload = function(){
          load.innerHTML = Math.round((count + 1) / imgs.length * 100) + '%';
          count++;
          if(count >= imgs.length-1){
            load.style.display = 'none';
            box.style.display = 'block';
            img.setAttribute('src',imgs[0]);
            document.title = '1/' + imgs.length;
          }
        }
      imgObj.onerror = function(){
          load.innerHTML = Math.round((count + 1) / imgs.length * 100) + '%';
          count++;
          if(count >= imgs.length-1){
            load.style.display = 'none';
            box.style.display = 'block';
            img.setAttribute('src',imgs[0]);
            document.title = '1/' + imgs.length;
          }
        }
        imgObj.src = imgs[i];
      })(i);
    }
  </script>
</body>
</html>

以上所述是小编给大家介绍的JS实现图片预加载之无序预加载功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • JS判断数组里是否有重复元素的方法小结

    JS判断数组里是否有重复元素的方法小结

    这篇文章主要介绍了JS判断数组里是否有重复元素的方法,结合实例形式分析了javascript针对数组重复元素判断相关的遍历、排序、递归等相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • JavaScript实现简单计算器

    JavaScript实现简单计算器

    这篇文章主要为大家详细介绍了JavaScript实现简单计算器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • element-ui上传一张图片后隐藏上传按钮功能

    element-ui上传一张图片后隐藏上传按钮功能

    这篇文章主要介绍了element-ui上传一张图片后隐藏上传按钮功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-05-05
  • egg.js的基本使用实例

    egg.js的基本使用实例

    本文主要介绍了egg.js的基本使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • Javascript作用域(局部和全局作用域)详细介绍

    Javascript作用域(局部和全局作用域)详细介绍

    作用域是当前的执行上下文,值和表达式在其中“可见”或可被访问,本文主要介绍了Javascript局部作用域和全局作用域,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以借鉴一下
    2023-06-06
  • 基于JavaScript实现弹出框效果

    基于JavaScript实现弹出框效果

    弹出框在网站页面中是必不可少的一部分,今天借助脚本之家平台给大家分享使用js实现简单的弹出框效果,感兴趣的朋友一起学习吧
    2016-02-02
  • 一次让你了解全部JavaScript的作用域

    一次让你了解全部JavaScript的作用域

    这篇文章主要介绍了一次让你了解全部JavaScript的作用域,作用域决定了变量的生命周期和可见性,变量在作用域范围之外是不可见的。,需要的朋友可以参考下
    2019-06-06
  • JS获取动态添加元素的方法详解

    JS获取动态添加元素的方法详解

    这篇文章主要介绍了JS获取动态添加元素的方法,结合实例形式分析了js动态添加DOM元素及获取已添加的DOM元素相关操作技巧,需要的朋友可以参考下
    2019-07-07
  • JS开发常用工具函数(小结)

    JS开发常用工具函数(小结)

    这篇文章主要介绍了JS开发常用工具函数
    2019-07-07
  • 小程序webView实现小程序内嵌H5页面的全过程

    小程序webView实现小程序内嵌H5页面的全过程

    在微信小程序中内嵌H5页面是一种常见的需求,因为H5页面具有灵活性和跨平台性,可以弥补小程序原生代码的不足,这篇文章主要给大家介绍了关于小程序webView实现小程序内嵌H5页面的相关资料,需要的朋友可以参考下
    2024-07-07

最新评论