找回密码
 立即注册

QQ登录

只需一步,快速开始

Derrick.Jiao 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2021-8-20 11:57  /   查看:3956  /  回复:8
本帖最后由 Derrick.Jiao 于 2021-8-20 12:03 编辑

相信有很多小伙伴在实际应用中,存在许多需要加载的大文件。在加载大文件的时候,由于浏览器的限制,可能需要花费一些时间,在这个时候需要加Loading这样的遮罩层。能够使得用户知道表单是在加载中,而不是“卡死”的情况,能够有效提升用户体验。当然,我们在v14也推出了增量加载,当导入大文件时建议使用增量加载以帮助优化初始加载时间。

具体效果如下,我们来看下如何实现吧。
image.png688691405.png

首先我们需要提前准备一张loding的gif图,在加载的时候用。并且创建两个DOM,一个是加载的gif图,一个是不允许用户操作表单的遮罩层。
<div class='center' id="load"><img src="./o_loading.gif" alt=""></div>
<div id="ZZ"></div>


对应的样式如下,loding图我们就让他页面居中显示,遮罩层设置一些透明度使其覆盖整个页面。并且两者默认都是不显示。
  1. .center {
  2.   width: 100px;
  3.   height: 100px;
  4.   text-align: center;
  5.   color: #fff;
  6.   display: none;
  7.   text-align: center;
  8. }
  9. #ZZ {
  10.   display: none;
  11.   position: absolute;
  12.   top: 0%;
  13.   left: 0%;
  14.   width: 100%;
  15.   height: 100%;
  16.   background-color: black;
  17.   z-index: 99999;
  18.   -moz-opacity: 0.1;
  19.   opacity: 0.1;
  20.   filter: alpha(opacity=10);
  21. }
复制代码

最后就是通过修改css的display属性使其显示或者隐藏。这里之所以用settimeout是因为刷新UI线程不应被js代码执行中断,添加setTimeout以提供浏览器刷新UI的机会。
  1. document.getElementById("ZZ").style.display = "block";
  2.     show(CenterDiv);

  3.     setTimeout(function () {
  4.       spread.fromJSON(data);

  5.       hide(CenterDiv);
  6.       document.getElementById("ZZ").style.display = "none";
  7.     }, 0);
复制代码

下载附件即可查看完整代码

loading.zip

2.07 MB, 下载次数: 497

8 个回复

倒序浏览
十亩苍烟
注册会员   /  发表于:2022-3-9 14:32:30
沙发
不是我想知道的,官方VUE的各个例子,是怎么做到的?
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-3-9 14:40:01
板凳
十亩苍烟 发表于 2022-3-9 14:32
不是我想知道的,官方VUE的各个例子,是怎么做到的?

请问你是指这个效果吗?这个本质就是用css做的。这个不属于spreadjs的支持内容,属于业务上的需求,建议你查找相关资料自行实现。
image.png89337767.png
回复 使用道具 举报
十亩苍烟
注册会员   /  发表于:2022-3-11 12:19:46
地板
多谢,在官网找到了!
回复 使用道具 举报
Derrick.Jiao讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2022-3-11 13:58:07
5#
十亩苍烟 发表于 2022-3-11 12:19
多谢,在官网找到了!

不用客气,有新的关于SpreadJS的问题欢迎开新帖交流~
回复 使用道具 举报
小弟弟
初级会员   /  发表于:2023-1-6 15:35:48
6#
十亩苍烟 发表于 2022-3-11 12:19
多谢,在官网找到了!

想问下怎么做的
回复 使用道具 举报
Lynn.Dou讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2023-1-6 17:43:07
7#
控制台找下class name和css样式,下图供参考:
image.png813619689.png
回复 使用道具 举报
闲着
注册会员   /  发表于:2024-9-4 15:10:36
8#
这个功能咋在官网上没找到呢
回复 使用道具 举报
Joestar.XuSpreadJS 开发认证
超级版主   /  发表于:2024-9-4 15:38:07
9#
您好,SpreadJS设计器本身是有加载效果的,但是如果没有使用设计器,只用了SpreadJS的话是没有加载效果的,您可以参考这篇文章自行实现。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部