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(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
跟我学习javascript的最新标准ES6
Nov 20 Javascript
js实现精确到毫秒的倒计时效果
Aug 05 Javascript
详解Javascript函数声明与递归调用
Oct 22 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
react-router实现跳转传值的方法示例
May 27 Javascript
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
微信小程序自定义toast组件的方法详解【含动画】
May 11 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
javascript canvas实现雨滴效果
Jun 09 Javascript
vue el-table实现递归嵌套的示例代码
Aug 14 Vue.js
详解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将向Java靠拢
2006/10/09 PHP
smarty 原来也不过如此~~呵呵
2006/11/25 PHP
php表单转换textarea换行符的方法
2010/09/10 PHP
深入php中var_dump方法的使用详解
2013/06/24 PHP
PHP创建对象的六种方式实例总结
2019/06/27 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
PHP设计模式概论【概念、分类、原则等】
2020/05/01 PHP
学习jquery之一
2007/04/27 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
jQuery实现ToolTip元素定位显示功能示例
2016/11/23 Javascript
Vue.js实战之组件之间的数据传递
2017/04/01 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
vue如何安装使用Quill富文本编辑器
2018/09/21 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
详解ES6 Promise对象then方法链式调用
2018/10/20 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
在vue中利用v-html按分号将文本换行的例子
2019/11/14 Javascript
python实现的jpg格式图片修复代码
2015/04/21 Python
Python中max函数用于二维列表的实例
2018/04/03 Python
利用Python如何批量更新服务器文件
2018/07/29 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
Python3爬虫中Selenium的用法详解
2020/07/10 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
HTML5重塑Web世界它将如何改变互联网
2012/12/17 HTML / CSS
html5使用canvas画一条线
2014/12/15 HTML / CSS
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
校园门卫岗位职责
2013/12/09 职场文书
英语自荐信范文
2013/12/11 职场文书
办公室经理岗位职责
2014/01/01 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
商场租赁意向书
2014/07/30 职场文书
Python初学者必备的文件读写指南
2021/06/23 Python
MySQL分区以及建索引的方法总结
2022/04/13 MySQL