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 相关文章推荐
匹配任意字符的正则表达式写法
Apr 29 Javascript
Function.prototype.call.apply结合用法分析示例
Jul 03 Javascript
js返回上一页并刷新的多种实现方法
Feb 26 Javascript
Javascript进制转换实例分析
May 14 Javascript
javascript简单比较日期大小的方法
Jan 05 Javascript
JavaScript隐式类型转换
Mar 15 Javascript
jQuery中实现prop()函数控制多选框(全选,反选)
Aug 19 Javascript
原生js编写2048小游戏
Mar 17 Javascript
Angular中管道操作符(|)的使用方法
Dec 15 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
vue-router权限控制(简单方式)
Oct 29 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
Nov 30 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
dedecms防止FCK乱格式化你的代码的修改方法
2007/03/17 PHP
DISCUZ 论坛管理员密码忘记的解决方法
2009/05/14 PHP
PHPLog php 程序调试追踪工具
2009/09/09 PHP
Thinkphp中数据按分类嵌套循环实现方法
2014/10/30 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
指定位置如果有图片显示图片,无图片显示广告的JS
2010/06/05 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
全面了解js中的script标签
2016/07/04 Javascript
概述如何实现一个简单的浏览器端js模块加载器
2016/12/07 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
JavaScript中在光标处插入添加文本标签节点的详细方法
2017/03/22 Javascript
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
2017/04/24 Javascript
vue数据控制视图源码解析
2018/03/28 Javascript
JavaScript常用数学函数用法示例
2018/05/14 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
JQuery判断radio单选框是否选中并获取值的方法
2019/01/17 jQuery
vue-cli3 karma单元测试的实现
2019/01/18 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
Ajax获取node服务器数据的完整步骤
2020/09/20 Javascript
Python中使用PIPE操作Linux管道
2015/02/04 Python
Python unittest模块用法实例分析
2018/05/25 Python
Python 新建文件夹与复制文件夹内所有内容的方法
2018/10/27 Python
python读写csv文件的方法
2019/08/13 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
IDLE下Python文件编辑和运行操作
2020/04/25 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
2014年销售员工作总结
2014/12/01 职场文书
会计工作能力自我评价
2015/03/05 职场文书
大学生自荐信怎么写
2015/03/26 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
放假通知格式
2015/04/14 职场文书