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

所属分类: 网络编程 / JavaScript 阅读数: 177
收藏 0 赞 0 分享

近期在做一个网站的查询功能,但是由于数据量确实太大,分页查询后也是很慢,同时查询出的数据部分还要进行一些处理,导致用户说要我们给他们加一个查询进度,要百分比显示。加上加载动画很简单,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文件加载优化,三种方式实现js文件加载优化,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

jQuery on()绑定动态元素出现的问题小结

jQuery on()方法是官方推荐的绑定事件的一个方法。使用 on() 方法可以给将来动态创建的动态元素绑定指定的事件,通过本文给大家介绍jQuery on()绑定动态元素出现的问题小结,需要的朋友参考下
收藏 0 赞 0 分享

基于JavaScript实现弹出框效果

弹出框在网站页面中是必不可少的一部分,今天借助脚本之家平台给大家分享使用js实现简单的弹出框效果,感兴趣的朋友一起学习吧
收藏 0 赞 0 分享

百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换

这篇文章主要介绍了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的相关资料,需要的朋友可以参考下
收藏 0 赞 0 分享

JavaScript深度复制(deep clone)的实现方法

本文给大家介绍JavaScript深度复制(deep clone)的实现方法,涉及到js深度复制相关知识,本文介绍的非常详细,特此分享脚本之家平台供大家参考
收藏 0 赞 0 分享

jQuery实现简单的DIV拖动效果

这篇文章主要介绍了jQuery实现简单的DIV拖动效果,涉及jQuery针对鼠标事件的响应及页面元素的动态操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

javascript每日必学之循环

javascript每日必学之循环,本文的主要内容就是循环,死循环时进行bug调式,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

javascript下使用Promise封装FileReader

这篇文章主要介绍了javascript下使用Promise封装FileReader,需要的朋友可以参考下
收藏 0 赞 0 分享

js下将金额数字每三位一逗号分隔

这篇文章主要介绍了js下将金额数字每三位一逗号分隔的相关资料,还附加了一个小功能,小数位保留两位,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

使用jQuery的easydrag插件实现可拖动的DIV弹出框

EasyDrag 是一个用来实现页面元素拖拉的 jQuery 插件。接下来通过本文给大家介绍使用jQuery的easydrag插件实现可拖动的DIV弹出框,感兴趣的朋友一起学习吧
收藏 0 赞 0 分享
查看更多