js-图片预加载

 
//图片预加载
//闭包模拟局部作用于

(function($){function Preload(imgs,options){this.imgs = (typeof imgs === 'string') ? [imgs]:imgs;this.opts = $.extend({},Preload.DEFAULTS,options);if(this.opts.order === 'ordered'){//有序加载this._ordered();}else{//无序加载this._unordered(); //下划线 只在当前内部使用,不外部调用
        }}//默认参数Preload.DEFAULTS = {order:'unordered',//默认无序预加载each:null,//每一张图片加载完毕后执行all:null //所有图片加载完成后执行
    }Preload.prototype._ordered = function(){let imgs = this.imgs,opts = this.opts,count = 0,len = imgs.length;loadImg();//有序与加载function loadImg(){var imgObj = new Image();$(imgObj).on('load error',()=>{opts.each && opts.each(count);if(count >= len){//所有图片加载完成opts.all && opts.all();}else{//加载下一张
                        loadImg();}count++;})imgObj.src = imgsArr[count]}}Preload.prototype._unordered = function(){//无序加载let imgs = this.imgs,opts = this.opts,count = 0,len = imgs.length;$.each(imgs,(i,src)=>{if(typeof src !='string'){return;}var imgObj = new Image();$(imgObj).on('load error',()=>{opts.each && opts.each(count);if(count >= len -1){opts.all && opts.all();}count ++;})imgObj.src = src;})};//插件封装
    $.extend({preload:function(imgs,options){new Preload(imgs,options);}})})(jQuery);

 

调用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>图片预加载</title><style>.img-box,.btn{text-align: center;}.img-box img{width: 500px;height: 500px;}.btn a{display: inline-block;height: 30px;line-height: 30px;border: 1px solid red;border-radius: 5px;margin-right: 10px;padding: 0 10px;color: #333;text-decoration: none;}.btn a:hover{background: #ccc;}.loading{position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 999;background: rosybrown;text-align: center;font-size: 30px;font-weight: 700;}.progress{margin-top: 300px;}</style>
</head>
<body><div class="box"><div class="img-box"><img src="http://pic1.win4000.com/wallpaper/4/59c480193e05b.jpg" alt=""></div><div class="btn"><a href="javascript:;" class="prev" data-controle="prev">上一页</a><a href="javascript:;" class="next" data-controle="next">下一页</a></div></div><!-- 预加载 --><div class="loading"><div class="progress">0%</div></div><script src="js/jquery-3.3.1.min.js"></script><script src="js/preload.js"></script><script>let imgsArr = ['http://pic1.win4000.com/wallpaper/4/59c480193e05b.jpg','http://pic1.win4000.com/wallpaper/7/57f9f84f0a29f.jpg','http://img17.3lian.com/d/file/201702/20/3a1744009d4b0e32a8a27e13299fc658.jpg','http://m.wendangwang.com/pic/ac555f0efbaa75d6a2b43778/7-810-jpg_6-1080-0-0-1080.jpg','http://pic170.nipic.com/file/20180620/27194830_202055800038_2.jpg']//调用插件
        let index = 0,len = imgsArr.length,$progress = $('.progress');$.preload(imgsArr,{each:function(count){$progress.html(Math.round((count+1)/len*100) + '%');
            },all:function(){$('.loading').hide();document.title = '1/' + len;}})$('.btn a').on('click',function(){if($(this).data('controle') === 'prev'){index = Math.max(0,--index)}else{index = Math.min(len - 1,++index)}document.title = (index) + '/' + len$('.img-box img').attr('src',imgsArr[index]);})</script>
</body>
</html>

 

转载于:https://www.cnblogs.com/huangmin1992/p/10406400.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/463419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LevelDb实现原理

原文地址&#xff1a;http://www.samecity.com/blog/Index.asp?SortID12&#xff0c; 最近由于工作上的需求&#xff0c;需要用到leveldb&#xff0c;因此转载此文章用于以后的查询使用。 LevelDb日知录之一&#xff1a;LevelDb 101 说起LevelDb也许您不清楚&#xff0c;但是…

发现几个常用的asp.net MVC Helper 源码

AspNetMvc.DbC.zipXmlSiteMap.zipXhtmlHelper.zipTreeView.zipQuickMenu.zipRotator_v1-1.zipRSSReader.zipFormValidation.zip转载于:https://www.cnblogs.com/nick4/archive/2009/06/10/1500284.html

排序 八种经典排序算法

排序(Sorting) 是计算机程序设计中的一种重要操作&#xff0c;它的功能是将一个数据元素(或记录)的任意序列&#xff0c;重新排列成一个关键字有序的序列。 我整理了以前自己所写的一些排序算法结合网上的一些资料&#xff0c;共介绍8种常用的排序算法&#xff0c;希望对大家能…

Redis使用过程出现类型转换异常问题- 20190220

问题描述&#xff1a; 使用redis过程中&#xff0c;出现类型转换异常问题&#xff0c;出现在存数据和取数据时。而且相同代码在本地测试无异常&#xff0c;而提交到测试环境&#xff0c;则会出现问题。 问题原因&#xff1a; 最后定位到&#xff0c;原因在使用redis存取数据时&…

表达式求值Spring.Expressions

简介Spring.Expressions命名空间可以用一种强大的表达式语言在运行时操作对象。这种语言可以读写属性值、调用方法、访问数组/集合/索引器的元素、进行算术和逻辑运算&#xff0c;同时支持命名变量&#xff0c;并且能够通过名称从IoC容器获取对象。 在Spring.NET中&#xff0c…

C语言 ,嵌入式 ,数据结构 面试题目(1)

1. 用预处理指令#define 声明一个常数&#xff0c;用以表明1年中有多少秒&#xff08;忽略闰年问题&#xff09; #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN&#xff0c;这个宏输入两个参数并返回较小的一个。 #define MIN(A,B) ((A) < (B) (…

使用Vue写一个登陆页面并在管理页面查看和修改

注册页面代码如下html 1 <!DOCTYPE html>2 <html lang"en">3 <head>4 <meta charset"UTF-8">5 <title>注册</title>6 <link rel"stylesheet" href"css/register.css">7 &l…

MarshalByRefObject 的DOME代码

今天研究了下MarshalByRefObject跨程序通讯&#xff0c;由于今天很晚了&#xff0c;先贴出DOME代码。 分别建立2个winform程序&#xff0c;WinClient和WinServer&#xff0c;2个项目中都有CommunicationInfo类&#xff08;你也可以将CommunicationInfo做成一个类库供2个winform…

坐地铁的好心MM们小心啊,周末刚经历了一个地铁新骗术

先废话少说&#xff0c;直奔主题。这个周日&#xff0c;也就是昨天&#xff0c;很开心的和BF坐5号线去东单看电影&#xff0c;在惠新西街南口那站上来一个小姑娘&#xff0c;也就11&#xff0c;12岁那样&#xff0c;穿着小背心、短裤&#xff0c;脖子上还挂着类似学生证一类的牌…

leveldb资料整理

转自&#xff1a;http://hideto.iteye.com/blog/1328921 最近一段时间在学习leveldb的源码&#xff0c;找到了一些相关的资源&#xff0c;用于后续查考和学习使用。 leveldb介绍 http://code.google.com/p/leveldb/ http://en.wikipedia.org/wiki/LevelDB http://highscalabi…

C语言 ,嵌入式 ,数据结构 面试题目(2)

100 struct name1{ char str;short x;int num; } struct name2{char str;int num;short x; } sizeof(struct name1)8,sizeof(struct name2)12101读文件file1.txt的内容&#xff08;例如&#xff09;&#xff1a; 12 34 56 输出到file2.txt&#xff1a; 56 34 12 &#xff08;…

hdu - 3415 Max Sum of Max-K-sub-sequence

题意&#xff1a;求一个环中最大区间和&#xff0c;区间长度 < n。 用单调队列优化Dp&#xff0c;核心内容是dp[i] max(sum[j]) - sum[i-1]。 这题最后的输出有很多要求&#xff0c;如果有多个解&#xff0c;输出起始位置最小的&#xff1b;如果还有多个解&#xff0c;输出…

XNA中的Render State管理

XNA中的Render State管理 仅供个人学习使用&#xff0c;请勿转载&#xff0c;勿用于任何商业用途。 The Problem&#xff1a; XNA中一个设计的非常不好的地方&#xff0c;就是把各种render state定义为RenderState类的成员&#xff0c;而不是枚举。在DX/MDX中&#xff0c…

11 装饰器

装饰器介绍与简单实现 1. 什么是装饰器 器:指的是具备某一功能的工具 装饰:指的是为被装饰器对象添加新功能 装饰器就是用来为被装饰器对象添加新功能的工具 注意:装饰器本身可以是任意可调用对象,被装饰器的对象也可以是任意可调用对象2. 为何要用装饰器 开放封…

C语言 ,嵌入式 ,数据结构 面试题目(3)

182 链表题&#xff1a;一个链表的结点结构 struct Node { int data ; Node *next ; }; typedef struct Node Node ; (1)已知链表的头结点head,写一个函数把这个链表逆序 ( Intel)Node * ReverseList(Node *head) //链表逆序 { if ( head NULL || head->next NULL ) retur…

C++11 新特性 —— 关键字noexcept

转载;https://www.cnblogs.com/sword03/p/10020344.html 1 关键字noexcept 从C11开始&#xff0c;我们能看到很多代码当中都有关键字noexcept。比如下面就是std::initializer_list的默认构造函数&#xff0c;其中使用了noexcept。 constexpr initializer_list() noexcept: _M…

统一项目管理平台(UMPlatForm.NET)-4.7 组织机构管理模块

统一项目管理平台&#xff08;UMPlatForm.NET&#xff09; 4.7 组织机构管理模块 统一项目管理平台&#xff08;UMPlatForm.NET&#xff09;,基于.NET的快速开发、整合框架。 4.7 组织机构管理模块 组织机构管理模块提供直观方便的组织机构管理&#xff0c;以树型结构显示单位和…

开源GIS系统关系图

转载于:https://www.cnblogs.com/penglink/archive/2009/06/26/1511373.html

c++常用知识点,易错点,面试常问点

1.谈谈你对C内存分配的理解1.1 还是的先看看C对内存分为哪几个区&#xff1f;1、栈区&#xff08;stack&#xff09;— 由编译器自动分配释放 &#xff0c;存放函数的参数值&#xff0c;局部变量的值等。其操作方式类似于数据结构中的栈。想知道为什么效率高吗&#xff1f;因为…

g++编译时的常用选项说明

最近在做一个新的项目&#xff0c;所有的代码都是新写的没有参考的部分&#xff0c;因此遇到了一些问题&#xff0c;主要是在编译方面的问题&#xff0c;算是对这2周时间的总结&#xff1a; g编译时使用了 -O3级别&#xff0c;参数如下&#xff1a; (1)、-g -O3 -DNDEBUG -fn…