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的逻辑运算符 ||
May 31 Javascript
javascript闭包的高级使用方法实例
Jul 04 Javascript
js动态调用css属性的小规律及实例说明
Dec 28 Javascript
js实现黑色简易的滑动门网页tab选项卡效果
Aug 31 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
Jan 01 Javascript
js实现纯前端的图片预览
Apr 27 Javascript
canvas实现图像截取功能
Feb 06 Javascript
JavaScript异步加载问题总结
Feb 17 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
Jan 05 jQuery
vue Tab切换以及缓存页面处理的几种方式
Nov 05 Javascript
微信公众号服务器验证Token步骤图解
Dec 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
PHP JSON 数据解析代码
2010/05/26 PHP
php session安全问题分析
2011/06/24 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JavaScript 函数式编程的原理
2009/10/16 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
使用jQuery Mobile框架开发移动端Web App的入门教程
2016/05/17 Javascript
详解JavaScript中this关键字的用法
2016/05/26 Javascript
深入理解node exports和module.exports区别
2016/06/01 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
浅析JS中NEW的实现原理及重写
2020/02/20 Javascript
Vue+tracking.js 实现前端人脸检测功能
2020/04/16 Javascript
Vue简单实现原理详解
2020/05/07 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
Python安装第三方库及常见问题处理方法汇总
2016/09/13 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
2017/07/10 Python
Flask核心机制之上下文源码剖析
2018/12/25 Python
Python button选取本地图片并显示的实例
2019/06/13 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
如何在python中执行另一个py文件
2020/04/30 Python
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
人力资源部岗位职责
2015/02/11 职场文书
关于召开会议的通知
2015/04/15 职场文书
小学语文教学反思范文
2016/03/03 职场文书
MybatisPlus代码生成器的使用方法详解
2021/06/13 Java/Android
Python闭包的定义和使用方法
2022/04/11 Python