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 相关文章推荐
推荐:极酷右键菜单
Nov 29 Javascript
JQuery onload、ready概念介绍及使用方法
Apr 27 Javascript
AngularJS入门教程之Scope(作用域)
Jul 27 Javascript
谈谈jQuery之Deferred源码剖析
Dec 19 Javascript
微信小程序 radio单选框组件详解及实例代码
Jan 10 Javascript
详解Vue 非父子组件通信方法(非Vuex)
May 24 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
微信小程序实现红包雨功能
Jul 11 Javascript
layui table去掉右侧滑动条的实现方法
Sep 05 Javascript
解决layer 动态加载select 失效的问题
Sep 18 Javascript
微信小程序错误this.setData报错及解决过程
Sep 18 Javascript
彻底搞懂并解决vue-cli4中图片显示的问题实现
Aug 31 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
paypal即时到账php实现代码
2010/11/28 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
PHP中exec与system用法区别分析
2014/09/22 PHP
PHP判断一个字符串是否是回文字符串的方法
2015/03/23 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
PHP中cookie知识点学习
2018/05/06 PHP
JavaScript 面向对象的之私有成员和公开成员
2010/05/04 Javascript
用原生JS获取CLASS对象(很简单实用)
2014/10/15 Javascript
JQuery DIV 动态隐藏和显示的方法
2016/06/23 Javascript
jquery-mobile表单的创建方法详解
2016/11/23 Javascript
纯js三维数组实现三级联动效果
2017/02/07 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
js回到页面指定位置的三种方式
2020/12/17 Javascript
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python的gevent框架的入门教程
2015/04/29 Python
Python实现截屏的函数
2015/07/26 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
解决Python对齐文本字符串问题
2019/08/28 Python
构建高效的python requests长连接池详解
2020/05/02 Python
颇特女士香港官网:NET-A-PORTER香港
2021/03/08 全球购物
遇到的Mysql的面试题
2014/06/29 面试题
如何写好升职自荐信
2014/01/06 职场文书
黄河象教学反思
2014/02/10 职场文书
手机银行营销方案
2014/03/14 职场文书
捐款倡议书
2014/04/14 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
2021/05/28 Python
拒绝盗图!教你怎么用python给图片加水印
2021/06/04 Python
如何利用python实现列表嵌套字典取值
2022/06/10 Python