关于使用easyui为前端框架,加载表格数据较多时在火狐浏览器会出现表格片段不停闪烁问题的兼容问题解决。

时间:2023-02-09 02:31:43

1、项目是可视化管理系统,加载的数据较多,使用谷歌浏览器从登陆界面跳转到主页时还算干净利落,但是使用火狐浏览器时在这一过程中在数据没有加载完毕之前,整个页面就仿佛是在闪烁,可以看到闪烁的是表格字段的片段,这对于用户体验而言并不友善,所以我就开始百度到底是什么原因。最终留意到一个大神写的博客,具体什么记不清楚了,但是大致的问题和我描述的差不多,于是采纳了他的解决办法:

思路:在页面加载之前也就是由登陆界面跳到首页这个过程之间,在首页内容还未完全加载出来之前用一个纯白色背景的盒子将其盖住,这样也就不会给用户看到页面内容不同闪烁的场景;且覆盖的时间是1秒钟,1秒钟过后就去掉这个盒子(使用定时器即可)。恢复首页原本应该有的样子。

实现步骤:

html:

<div id='loadingDiv' class="loadingDiv"><h4>loading.................</h4></div>

js:

function closeLoading() {
$("#loadingDiv").fadeOut("normal", function () {
$(this).remove();
});
}
var no;
$.parser.onComplete = function () {
if (no) clearTimeout(no);
no = setTimeout(closeLoading, 1000);
}

以上方法就可以完美解决页面加载时不停闪烁的问题。

2、本来以上方法就可以解决问题了,我想使用户体验更加好些,也就是页面在等待加载的1秒钟时间内不是呆呆的只有一行字在哪里摆着。想到了css3的新型样式,“加载”的动画效果。于是借鉴了网站大神写的关于使用css3实现加载效果的案例,作了一些改动,将两者完美结合,效果还不错。

html:

<div id='loadingDiv' class="loadingDiv">
<div class='container'>
<div class='loading-anim'>
<div class='border out'></div>
<div class='border in'></div>
<div class='border mid'></div>
<div class='circle'>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
<span class='dot'></span>
</div>
</div>
</div>
</div>

注:1、loadingDiv:主要是实现哪个遮挡的盒子

2、container:包含的所有元素主要作用是实现加载的动态效果。

css样式:

.container {
margin: 20px;
width: calc(100% - 40px);
height: auto;

}

.loading-anim {
position: relative;
width: 200px;
height: 200px;
margin: auto;
perspective: 800px;
transform-style: preserve-3d;
transform: translateZ(-100px) rotateY(0deg) rotateX(165deg) rotateZ(90deg) scale(0.3); //这个主要是定义加载图案的呈现效果,距离X  Y Z有多少度数
opacity: 1;  //如果设置为0就完全不显示了
transition: all .2s ease-out;
}
.loading-anim .circle {
width: 100%;
height: 100%;
animation: spin 5s linear infinite;
}
.loading-anim .border {
position: absolute;
border-radius: 50%;
border: 3px solid #000;
}
.loading-anim .out {
top: 15%;
left: 15%;
width: 70%;
height: 70%;
border-left-color: transparent;
border-right-color: transparent;
animation: spin 2.08333s linear reverse infinite;
}
.loading-anim .in {
top: 29%;
left: 29%;
width: 42%;
height: 42%;
border-top-color: transparent;
border-bottom-color: transparent;
animation: spin 1.66667s linear infinite;
}
.loading-anim .mid {
top: 40%;
left: 40%;
width: 20%;
height: 20%;
border-left-color: transparent;
border-right-color: transparent;
animation: spin 1.25s linear infinite;
}

.loading .loading-anim {
transform: translateZ(0) rotateY(0deg) rotateX(0deg) rotateZ(0deg) scale(0.3);
opacity: 1;
}

.loading .loading-overlay {
background: rgba(255, 255, 255, 0.5);
}

.dot {
position: absolute;
display: block;
width: 20px;
height: 20px;
border-radius: 50%;
background-color: #000000;
animation: jitter 5s ease-in-out infinite, fade-in-out 5s linear infinite;
}

.dot:nth-child(1) {
top: 90px;
left: 180px;
animation-delay: 0s;
}

.dot:nth-child(2) {
top: 135px;
left: 168px;
animation-delay: 0.41667s;
}

.dot:nth-child(3) {
top: 168px;
left: 135px;
animation-delay: 0.83333s;
}

.dot:nth-child(4) {
top: 180px;
left: 90px;
animation-delay: 1.25s;
}

.dot:nth-child(5) {
top: 168px;
left: 45px;
animation-delay: 1.66667s;
}

.dot:nth-child(6) {
top: 135px;
left: 12px;
animation-delay: 2.08333s;
}

.dot:nth-child(7) {
top: 90px;
left: 0px;
animation-delay: 2.5s;
}

.dot:nth-child(8) {
top: 45px;
left: 12px;
animation-delay: 2.91667s;
}

.dot:nth-child(9) {
top: 12px;
left: 45px;
animation-delay: 3.33333s;
}

.dot:nth-child(10) {
top: 0px;
left: 90px;
animation-delay: 3.75s;
}

.dot:nth-child(11) {
top: 12px;
left: 135px;
animation-delay: 4.16667s;
}

.dot:nth-child(12) {
top: 45px;
left: 168px;
animation-delay: 4.58333s;
}

@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
@keyframes jitter {
0% {
transform: scale(1, 1);
}
25% {
transform: scale(0.7, 0.7);
}
50% {
transform: scale(1, 1);
}
75% {
transform: scale(1.3, 1.3);
}
100% {
transform: scale(1, 1);
}
}
@keyframes fade-in-out {
0% {
opacity: 0.8;
}
25% {
opacity: 0.2;
}
75% {
opacity: 1;
}
100% {
opacity: 0.8;
}
}
.loadingDiv{
position: absolute; z-index: 1000; top: 0px; left: 0px;
width: 100%; height: 100%; background: white; text-align: center;
}

到这里其实想要的效果已经出来了,只是目前还是有个小问题在困扰我,在谷歌浏览器下完全没有问题,堪称完美。但是在火狐浏览器下感觉还是有些许卡顿,就像是网速太慢的那种感觉,不知是否是浏览器本身的某些问题呢??

关于使用easyui为前端框架,加载表格数据较多时在火狐浏览器会出现表格片段不停闪烁问题的兼容问题解决。的更多相关文章

  1. ExtJs非Iframe框架加载页面实现

    在用Ext开发App应用时,一般的框架都是左边为菜单栏,中间为tab页方式的显示区域.而tab页面大多采用的嵌入一个iframe来显示内容.但是采用iframe方式有一个很大的弊端就是每次在加载一个新 ...

  2. jquery easyui easyui-treegrid 使用异步加载数据

    jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...

  3. EasyUI - DataGrid 组建 - &lbrack; 组件加载和分页 &rsqb;

    效果: 原理:通过POST传递到数据后台字段. 此时上传的参数,page:当前页数,rows:每页显示的页数. 有此两项参数,计算取出数据条数. 通过后台接受参数,进行处理并返回抽取的数据. html ...

  4. EasyUI搭建前端框架

    EasyUI搭建前端框架 前言: 最近在忙公司的项目,也没太多时间来更新博客,谢谢大家的关注. 好啦,有了前面的系统整体简介和用户登录界面,我们开始使用EasyUI搭建前端页面框架! EasyUI官方 ...

  5. 页面框架加载完自动执行函数&dollar;&lpar;function&lpar;&rpar;&lbrace;&rcub;&rpar;&semi;

    页面中有一些大的资源文件,如图片,声音等,如果一个事件绑定写在这些加载资源代码的下方,那么要等资源加载完才会绑定,这样体验不够好. 于是想不等资源加载完,只要框架加载完成就绑定事件,就可以把代码放在以 ...

  6. jquery-事件之页面框架加载后自动执行

    jQuery事件之页面框架加载后自动执行 1)概述 HTML执行是按自上而下编译,而<script>一般写在body结束之前.如果在HTML加载的过程中卡住, 比如加载图片等,没有显示出来 ...

  7. 【EasyUI学习-2】Easyui Tree的异步加载

    作者:ssslinppp       1. 摘要 2. tree的相关介绍 3. 异步加载tree数据,并实现tree的折叠展开 3.1 功能说明: 3.2 前台代码 3.3 后台代码 4. 其他 1 ...

  8. iframe框架加载完成后执行函数

    var iframe = document.createElement("iframe"); iframe.src = "http://www.baidu.com/&qu ...

  9. Jquery EasyUI Treegrid按需加载子集

    项目说明,要一个有权限并且按需加载的树形列表. jeasyui网址 CSS <!--添加树状控件--> <link rel="stylesheet" type=& ...

随机推荐

  1. 从零开始,搭建博客系统MVC5&plus;EF6搭建框架(4)上&comma;前后台页面布局页面实现,介绍使用的UI框架以及JS组件

    一.博客系统进度回顾以及页面设计 1.1页面设计说明 紧接前面基础基本完成了框架搭建,现在开始设计页面,前台页面设计我是模仿我博客园的风格来设计的,后台是常规的左右布局风格. 1.2前台页面风格 主页 ...

  2. oracle之报错&colon;ORA-00054&colon; 资源正忙,要求指定 NOWAIT

    oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT 问题如下: SQL> conn scott/tiger@vm_database Connected to Oracle ...

  3. block 数组排序

    #import <Foundation/Foundation.h> //定义⼀一个block,返回值为BOOL,有两个NSString参数.实现:判 //断字符串是否相等. BOOL (^ ...

  4. ASP&period;NETserver控件使用之Reportviewer 报表

    1.       Reportviewer 报表 1.1.       Reportviewer控件 注:本教程附2个事例: l  演练:在本地处理模式下将数据库数据源与 ReportViewer W ...

  5. 关于取数组地址的识记&lpar;&amp&semi;s&plus;1&comma;s&plus;1&comma;&amp&semi;s&lbrack;0&rsqb;&plus;1&rpar;

    #include <stdio.h> #include <malloc.h> int main() { ', 'o'}; ); printf(]); ]+); printf(] ...

  6. 解决URL请求中的中文乱码问题

    解决URL提交中文出现乱码有两种办法:1.请求端的中字符有encodeURI进行一次转码,如: var url="/getUser?name="+encodeURI(name);服 ...

  7. 第2章 熟悉Eclipse开发工具---- System&period;out&period;println&lpar;&quot&semi;sum&equals;&quot&semi;&plus;&lpar;a&plus;b&rpar;&rpar;&semi;

  8. &lbrack;HNOI2010&rsqb;PLANAR

    题目描述 若能将无向图G=(V,E)画在平面上使得任意两条无重合顶点的边不相交,则称G是平面图.判定一个图是否为平面图的问题是图论中的一个重要问题.现在假设你要判定的是一类特殊的图,图中存在一个包含所 ...

  9. 修改win7系统sid

    百度百科定义: Windows使用SID来表示所有的安全对象(security principals).安全对象包括主机,域计算机账户,用户和安全组.名字Name是用来代表SID的一个方法,可以允许用 ...

  10. 我永远爱着OOP——第二单元作业总结

    第二单元的电梯真是愉♂快呢,多线程编程作为java编程OOP中的重要组成部分,通过这一个单元的学习,我也是有了很多全新的认识 那么下面就先例行一下公事 三次作业分析 第五次作业 设计分析 实现的电梯是 ...