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 相关文章推荐
checkbox 复选框不能为空
Jul 11 Javascript
javascript入门基础之私有变量
Feb 23 Javascript
js中单引号与双引号冲突问题解决方法
Oct 04 Javascript
JavaScript对象学习经验整理
Oct 12 Javascript
JS控制表格实现一条光线流动分割行的方法
Mar 09 Javascript
Javascript必知必会(四)js类型转换
Jun 08 Javascript
angular directive的简单使用总结
May 24 Javascript
Angular 2父子组件数据传递之@ViewChild获取子组件详解
Jul 04 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
vue2.0 父组件给子组件传递数据的方法
Jan 15 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
May 21 Javascript
Vue实现购物车基本功能
Nov 08 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中三个等号(===)和两个等号(==)的区别
2013/08/06 PHP
2014过年倒计时示例
2014/01/31 PHP
十幅图告诉你什么是PHP引用
2015/02/22 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
Zend Studio使用技巧两则
2016/04/01 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
2016/05/27 PHP
php判断是否连接上网络的方法实例详解
2016/12/14 PHP
一个多次搜索+多次传值的解决方案
2007/01/20 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
关于jQuery新的事件绑定机制on()的使用技巧
2013/04/26 Javascript
javascript搜索框点击文字消失失焦时文本出现
2014/09/18 Javascript
javascript实现根据3原色制作颜色选择器的方法
2015/07/17 Javascript
详解JavaScript的AngularJS框架中的表达式与指令
2016/03/05 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
用node撸一个监测复联4开售短信提醒的实现代码
2019/04/10 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
javaScript代码飘红报错看不懂?读完这篇文章再试试
2020/08/19 Javascript
Python实现的几个常用排序算法实例
2014/06/16 Python
Python编程对列表中字典元素进行排序的方法详解
2017/05/26 Python
Python编程pygame模块实现移动的小车示例代码
2018/01/03 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
2020/06/08 Python
python实现二分类和多分类的ROC曲线教程
2020/06/15 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
《散步》教学反思
2014/03/02 职场文书
幼儿园秋游感想
2014/03/12 职场文书
2014年百日安全生产活动总结
2014/05/04 职场文书
募捐倡议书怎么写
2014/05/14 职场文书
抗洪救灾先进集体事迹材料
2014/05/26 职场文书
男性健康日的活动方案
2014/08/18 职场文书
政风行风评议工作总结
2014/10/21 职场文书
研讨会通知
2015/04/27 职场文书
学校德育工作总结2015
2015/05/11 职场文书
鲁冰花观后感
2015/06/10 职场文书
Python基础详解之描述符
2021/04/28 Python
Python实现Hash算法
2022/03/18 Python