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 相关文章推荐
超强的IE背景图片闪烁(抖动)的解决办法
Sep 09 Javascript
jquery简单的拖动效果实现原理及示例
Jul 26 Javascript
jquery使用jxl插件导出excel示例
Apr 14 Javascript
JS运动基础框架实例分析
Mar 03 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
Dec 08 Javascript
bootstrap为水平排列的表单和内联表单设置可选的图标
Feb 15 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
React学习笔记之列表渲染示例详解
Aug 22 Javascript
Angular5集成eventbus的示例代码
Jul 19 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 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
下载文件的点击数回填
2006/10/09 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
基于jQuery的日期选择控件
2009/10/27 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
Jquery实现图片预加载与延时加载的方法
2014/12/22 Javascript
jquery+ajax实现跨域请求的方法
2015/01/20 Javascript
Underscore源码分析
2015/12/30 Javascript
JavaScript中apply方法的应用技巧小结
2016/09/29 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
详解vue axios中文文档
2017/09/12 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
浅谈AngularJs 双向绑定原理(数据绑定机制)
2017/12/07 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
用node-webkit把web应用打包成桌面应用(windows环境)
2018/02/01 Javascript
解决使用layui的时候form表单中的select等不能渲染的问题
2019/09/18 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
javascript实现拼图游戏
2021/01/29 Javascript
python分布式环境下的限流器的示例
2017/10/26 Python
Python中optparser库用法实例详解
2018/01/26 Python
python xlsxwriter库生成图表的应用示例
2018/03/16 Python
Python中的pathlib.Path为什么不继承str详解
2019/06/23 Python
详解Python Qt的窗体开发的基本操作
2019/07/14 Python
python安装gdal的两种方法
2019/10/29 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
利用css3制作3D样式按钮实现代码
2013/03/18 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
学校四群教育实施方案
2014/06/12 职场文书
市场营销专业求职信
2014/06/17 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
购房协议书范本
2014/10/02 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
关于观后感的作文
2015/06/18 职场文书
Python图片处理之图片裁剪教程
2021/05/27 Python