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 相关文章推荐
EXT窗口Window及对话框MessageBox
Jan 27 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
Dec 31 Javascript
JavaScript中的异常捕捉介绍
Dec 31 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
JavaScript Math.round() 方法
Dec 18 Javascript
Javascript从数组中随机取出不同元素的两种方法
Sep 22 Javascript
基于jQuery实现滚动刷新效果
Jan 09 Javascript
Angular.js中处理页面闪烁的方法详解
Mar 09 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
Mar 27 Javascript
VUE前端cookie简单操作
Oct 17 Javascript
解决在vue项目中webpack打包后字体不生效的问题
Sep 01 Javascript
详解Vue中Axios封装API接口的思路及方法
Oct 10 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循环语句 for()与foreach()用法区别介绍
2012/09/05 PHP
php中有关合并某一字段键值相同的数组合并的改进
2015/03/10 PHP
php查看网页源代码的方法
2015/03/13 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
PhpStorm的使用教程(本地运行PHP+远程开发+快捷键)
2020/03/26 PHP
雄兵连第三季海报曝光,艾妮熙德成主角,蔷薇新造型
2021/03/09 国漫
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
基于jQuery实现简单人工智能聊天室
2017/02/10 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
Vue 实现前进刷新后退不刷新的效果
2019/06/14 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
Python实现的简单文件传输服务器和客户端
2015/04/08 Python
python模块简介之有序字典(OrderedDict)
2016/12/01 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Django URL参数Template反向解析
2020/11/24 Python
北美主要的汽车零部件零售商:AutoShack.com
2019/02/23 全球购物
中层竞聘演讲稿
2014/01/09 职场文书
高等教育学自荐书范文
2014/02/10 职场文书
运动会加油口号
2014/06/07 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
Java设计模式之享元模式示例详解
2022/03/03 Java/Android