关于使用easyui为前端框架,加载表格数据较多时在火狐浏览器会出现表格片段不停闪烁问题的兼容问题解决。
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为前端框架,加载表格数据较多时在火狐浏览器会出现表格片段不停闪烁问题的兼容问题解决。的更多相关文章
- ExtJs非Iframe框架加载页面实现
在用Ext开发App应用时,一般的框架都是左边为菜单栏,中间为tab页方式的显示区域.而tab页面大多采用的嵌入一个iframe来显示内容.但是采用iframe方式有一个很大的弊端就是每次在加载一个新 ...
- jquery easyui easyui-treegrid 使用异步加载数据
jquery easyui easyui-treegrid 使用异步加载数据 jquery easyui easyui-treegrid 异步请求 >>>>>>&g ...
- EasyUI - DataGrid 组建 - [ 组件加载和分页 ]
效果: 原理:通过POST传递到数据后台字段. 此时上传的参数,page:当前页数,rows:每页显示的页数. 有此两项参数,计算取出数据条数. 通过后台接受参数,进行处理并返回抽取的数据. html ...
- EasyUI搭建前端框架
EasyUI搭建前端框架 前言: 最近在忙公司的项目,也没太多时间来更新博客,谢谢大家的关注. 好啦,有了前面的系统整体简介和用户登录界面,我们开始使用EasyUI搭建前端页面框架! EasyUI官方 ...
- 页面框架加载完自动执行函数$(function(){});
页面中有一些大的资源文件,如图片,声音等,如果一个事件绑定写在这些加载资源代码的下方,那么要等资源加载完才会绑定,这样体验不够好. 于是想不等资源加载完,只要框架加载完成就绑定事件,就可以把代码放在以 ...
- jquery-事件之页面框架加载后自动执行
jQuery事件之页面框架加载后自动执行 1)概述 HTML执行是按自上而下编译,而<script>一般写在body结束之前.如果在HTML加载的过程中卡住, 比如加载图片等,没有显示出来 ...
- 【EasyUI学习-2】Easyui Tree的异步加载
作者:ssslinppp 1. 摘要 2. tree的相关介绍 3. 异步加载tree数据,并实现tree的折叠展开 3.1 功能说明: 3.2 前台代码 3.3 后台代码 4. 其他 1 ...
- iframe框架加载完成后执行函数
var iframe = document.createElement("iframe"); iframe.src = "http://www.baidu.com/&qu ...
- Jquery EasyUI Treegrid按需加载子集
项目说明,要一个有权限并且按需加载的树形列表. jeasyui网址 CSS <!--添加树状控件--> <link rel="stylesheet" type=& ...
随机推荐
- 1Mybatis入门--1.1单独使用jdbc编程问题总结
1.1.1 jdbc程序 Public static void main(String[] args) { Connection connection = null; PreparedStatemen ...
- linux 用户管理命令
- JVM内存分配及GC流程
-verbose 这是查询GC问题最常用的命令之一,具体参数如: -verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断. -verbose:gc 输 ...
- python,关于这个里边的私有方法(private)、保护方法(protected)、公开方法(public)
__foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的. _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行 ...
- os及os.path练习题
查找目录下每个文件的数量(考察获取文件后缀名以及获取当前目录下文件方法) import os #获取目录下的所有文件 list = os.listdir('.') filetype = {} for ...
- Java strictfp有什么作用
- 20165221—JAVA第六周学习心得
课本知识点小结 第8章:常用实用类 String类 常量对象放入常量池中,而用string声明的对象变量中存放着引用.凡是new构造的常量都不在常量池中. startIndex表示提取字符的起始位置, ...
- 2018牛客暑期ACM多校训练营第二场(有坑未填)
第二场终于等来学弟 开始(被队友带飞)的开心(被虐)多校之旅 A run A题是一个递推(dp?)+前缀和 因为看数据量比较大 就直接上前缀和了 一个比较简单的递推 没有太多难点 签到题 需要注意 ...
- Python3学习笔记28-HtmlTestRunner
HtmlTestRunner是unittest模块下的一个拓展,用来生成测试报告.原生的可以自己找下下载地址,原生的看着比较丑.这次使用的是经过一些大佬优化之后的.具体GitHub地址:https:/ ...
- Memcached技术
Memcached技术 介绍: memcached是一种缓存技术, 他可以把你的数据放入内存,从而通过内存访问提速,因为内存最快的, memcached技术的主要目的提速, 在memachec 中维护 ...