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


Posted in Javascript onMay 12, 2017

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

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实现图片预加载之无序预加载功能代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
Oct 11 Javascript
Js类的静态方法与实例方法区分及jQuery拓展的两种方法
Jun 03 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
基于JavaScript实现右键菜单和拖拽功能
Nov 28 Javascript
JavaScript定时器实现的原理分析
Dec 06 Javascript
js获取地址栏中传递的参数(两种方法)
Feb 08 Javascript
vue实现循环切换动画
Oct 17 Javascript
监控微信小程序中的慢HTTP请求过程详解
Jul 05 Javascript
vue实现axios图片上传功能
Aug 20 Javascript
修改Vue打包后的默认文件名操作
Aug 12 Javascript
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 Javascript
React forwardRef的使用方法及注意点
Jun 13 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
May 12 #Javascript
vue学习笔记之指令v-text &amp;&amp; v-html &amp;&amp; v-bind详解
May 12 #Javascript
JS常用正则表达式总结【经典】
May 12 #Javascript
vue.js的安装方法
May 12 #Javascript
JS匹配日期和时间的正则表达式示例
May 12 #Javascript
js如何获取网页所有图片
May 12 #Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
May 12 #Javascript
You might like
PHP之生成GIF动画的实现方法
2013/06/07 PHP
php从数组中随机选择若干不重复元素的方法
2015/03/14 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
如何实现iframe(嵌入式帧)的自适应高度
2006/07/26 Javascript
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
2013/06/06 Javascript
JavaScript中Cookies的相关使用教程
2015/06/04 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
小程序实现多列选择器
2019/02/15 Javascript
JavaScript之数组扁平化详解
2019/06/03 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
Vue实现Header渐隐渐现效果的实例代码
2020/11/05 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python生成指定尺寸缩略图的示例
2014/05/07 Python
Python实现抓取城市的PM2.5浓度和排名
2015/03/19 Python
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python 获取url中的参数列表实例
2018/12/18 Python
Python K最近邻从原理到实现的方法
2019/08/15 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
django实现支付宝支付实例讲解
2019/10/17 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
无畏的旅行:Intrepid Travel
2017/12/20 全球购物
销售类个人求职信范文
2013/09/25 职场文书
高中生毕业自我鉴定范文
2013/12/22 职场文书
学校后勤人员职责
2013/12/27 职场文书
毕业生自我鉴定实例
2014/01/21 职场文书
新春文艺演出主持词
2014/03/27 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
小学班主任个人总结
2015/03/03 职场文书
紫日观后感
2015/06/05 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书