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 相关文章推荐
jQuery 前的按键判断代码
Mar 19 Javascript
JS简单的轮播的图片滚动实例
Jun 17 Javascript
Jquery插件easyUi表单验证提交(示例代码)
Dec 30 Javascript
用IE重起计算机或者关机的示例代码
Mar 10 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
javascript中sort排序实例详解
Jul 24 Javascript
jQuery简单实现彩色云标签效果示例
Aug 01 Javascript
angular forEach方法遍历源码解读
Jan 25 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
Jun 29 Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 Javascript
Vue2.0基于vue-cli+webpack父子组件通信(实例讲解)
Sep 14 Javascript
微信小程序之蓝牙的链接
Sep 26 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
中国收音机工业发展史
2021/03/02 无线电
PHP扩展编写点滴 技巧收集
2010/03/09 PHP
深入了解PHP中的Array数组和foreach
2016/11/06 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
js中获取事件对象的方法小结
2011/03/13 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
js返回前一页刷新本页重载页面
2014/07/29 Javascript
JavaScript针对网页节点的增删改查用法实例
2015/02/02 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
解决bootstrap导航栏navbar在IE8上存在缺陷的方法
2016/07/01 Javascript
javascript 判断是否是微信浏览器的方法
2016/10/09 Javascript
js自制图片放大镜功能
2017/01/24 Javascript
ExtJs异步无法向外传值和赋值的完美解决办法
2017/06/14 Javascript
vue跨域解决方法
2017/10/15 Javascript
解决Angular.js中使用Swiper插件不能滑动的问题
2018/02/26 Javascript
layui点击导航栏刷新tab页的示例代码
2018/08/14 Javascript
实例分析Array.from(arr)与[...arr]到底有何不同
2019/04/09 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
vuex的使用步骤
2021/01/06 Vue.js
Vue使用Ref跨层级获取组件的步骤
2021/01/25 Vue.js
python基于windows平台锁定键盘输入的方法
2015/03/05 Python
numpy判断数值类型、过滤出数值型数据的方法
2018/06/09 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Django集成搜索引擎Elasticserach的方法示例
2019/06/04 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
windows支持哪个版本的python
2020/07/03 Python
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
优秀应届毕业生推荐信
2014/02/18 职场文书
个人贷款承诺书
2014/03/28 职场文书
我的小天地教学反思
2014/04/30 职场文书
项目工作说明书
2014/07/29 职场文书
nginx网站服务如何配置防盗链(推荐)
2021/03/31 Servers
Python实现生活常识解答机器人
2021/06/28 Python