layui 实现加载动画以及非真实加载进度的方法


Posted in Javascript onSeptember 23, 2019

近期在做一个网站的查询功能,但是由于数据量确实太大,分页查询后也是很慢,同时查询出的数据部分还要进行一些处理,导致用户说要我们给他们加一个查询进度,要百分比显示。加上加载动画很简单,layui有现成的。但是还要动画。。我tm(手动微笑),原谅我水平比较低。然后就瞎搞,终于搞出了一个加载的进度,虽然还是假的。。。

上面废话有点多,直接切入正题。

首先是html代码。。。。。(不存在的2333333........)

然后是js代码:

//这里是必须要有的,_index的作用是用来关闭遮罩,详细看layui的文档
 var _index;
 var _lp_baseTime = 0;
 var _lp_startTime = 0;
 function updateLoadProgress() {
  if (_lp_baseTime < 0) {
   layer.close(_index);
   return;
  }
  var dval = parseInt(new Date().valueOf())- parseInt(_lp_startTime);
  var timeDifference = (dval / _lp_baseTime).toFixed(2);
  var lp = timeDifference < 1 ? timeDifference * 100 : 99;
  $("#loadProgress").html(parseInt(lp));
  setTimeout(function () { updateLoadProgress(); return; }, 650);
 }
 
 
 function 你的函数(){
 
 $.ajax({
  url:url,
  async:true,
  data:{},
  beforeSend:function(){
   //敲黑板
   _index = layer.load(1, {
     content: "<div style='margin-left:-23px;padding-top:44px;width:120px;color:#FFF;'>正在查询(<span id='loadProgress' >0</span>%)</div>",
     shade: [0.5, '#000']
    });
   //这里是预估的时间,因为整个进度都是根据消耗时间计算的 = =
   //这里的start,end,stns都是原始项目里带的。这个的作用是计算要等待的时长的,可以给一个固定值或者其他的东西公式,保证结果是正整数,单位是毫秒即可。
   _lp_baseTime = Math.abs(new Date(end).valueOf() - new Date(start).valueOf()) / 3600000 * stns.split(',').length * 150;
   _lp_startTime = new Date().valueOf();
 
   setTimeout(function () { updateLoadProgress(); return; }, 60);
  },
  success:function(){ _lp_baseTime = -1; $("#loadProgress").html("100");layer.close(_index); },
  error:function(){
    _lp_baseTime = -1;
    layer.close(_index);
   }
 });
 
 }

OK,就是这么多,主要是利用预估的时间与现在已进行时间进行预估做比较,所以实际使用的时候还要进行一定程度的调整,但是,最起码也是个思路是不是233333,参考一下吧

超过时间时进度会定格在99%,所以,emmmm....注意预留一些时间

以上这篇layui 实现加载动画以及非真实加载进度的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript限定复选框的选择个数示例代码
Aug 25 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
Apr 29 Javascript
node.js中的console.time方法使用说明
Dec 09 Javascript
JQuery动画与特效实例分析
Feb 02 Javascript
JQuery中extend的用法实例分析
Feb 08 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
Sep 14 Javascript
Three.js学习之Lamber材质和Phong材质
Aug 04 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
javascript判断一个变量是数组还是对象
Apr 10 Javascript
React-redux实现小案例(todolist)的过程
Sep 29 Javascript
Vue组件简易模拟实现购物车
Dec 21 Vue.js
javascript的setTimeout()使用方法总结
Nov 20 Javascript
layui加载数据显示loading加载完成loading消失的实例代码
Sep 23 #Javascript
ES10的13个新特性示例(小结)
Sep 23 #Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
Sep 23 #Javascript
vue多页面项目中路由使用history模式的方法
Sep 23 #Javascript
JS随机密码生成算法
Sep 23 #Javascript
详解mpvue开发微信小程序基础知识
Sep 23 #Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 #Javascript
You might like
php生成文件
2007/01/15 PHP
php 全文搜索和替换的实现代码
2008/07/29 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
PHP使用imagick扩展实现合并图像的方法
2017/04/25 PHP
用jQuery中的ajax分页实现代码
2011/09/20 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
2013/06/24 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
微信小程序使用第三方库Underscore.js步骤详解
2016/09/27 Javascript
简单实现js选项卡切换效果
2017/02/09 Javascript
AngularJS自定义指令实现面包屑功能完整实例
2017/05/17 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
简单了解微信小程序 e.target与e.currentTarget的不同
2019/09/27 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
2020/10/30 Javascript
在NumPy中创建空数组/矩阵的方法
2018/06/15 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
CSS3中Transition动画属性用法详解
2016/07/04 HTML / CSS
C有"按引用传递"吗
2016/09/06 面试题
茶叶生产计划书
2014/01/10 职场文书
高中生期末评语大全
2014/01/28 职场文书
中专毕业生自我鉴定
2014/02/02 职场文书
公休请假条
2014/04/11 职场文书
大学共青团员个人自我评价
2014/04/16 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
2014年学习部工作总结
2014/11/12 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
飞屋环游记观后感
2015/06/08 职场文书
情况说明书怎么写
2015/10/08 职场文书
电工实训心得体会
2016/01/14 职场文书
生产实习心得体会范文
2016/01/22 职场文书
导游词之韩国济州岛
2019/10/28 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs