结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)
最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件。思路:定义一个代码块,手动加载到页面,然后手动删除。 在项目中调用 的时候就可以实例化这个插件,调用他的打开关闭方法,这个插件主要是在Ajax请求数据的时候需要。
Js代码:
define([ 'jquery'], function($){
function BlockUI(){
this.boundingBox = null;
}
BlockUI.prototype = $.extend({}, {
renderUI: function(){
this.boundingBox = $('<div class="ng-scope block-ui">'+
'<div class="block-ui-overlay block-ui-visible"></div>'+
'<div class="block-ui-message-container ">'+
'<div class="block-ui-message">'+
'<div class="loading-outer">'+
'<div class="loading-logo"></div>'+
' <div class="loading-circle"></div>'+
'</div>'+
'</div>'+
'<div class="loading-text ">数据正在加载中</div>'+
' </div>'+
'</div>');
this.boundingBox.appendTo(document.body);
},
render: function(container){
this.renderUI();
$(container || document.body).append(this.boundingBox);
},
start: function(){
this.render();
},
stop: function(){
this.boundingBox.off();
this.boundingBox.remove();
}
})
return {
BlockUI: BlockUI
}
})
因为工作需要,本人又把这个插件优化了下,直接扩展Jquery来编写。优化之后,页面上不管多少请求,始终只有一个Mask,这样效果更理想。
define([ 'jquery'], function($){
$.blockUI = $.extend({},{
token:0,
renderUI: function(){
this.boundingBox = $('<div id="myblockui" class="ng-scope block-ui">'+
'<div class="block-ui-overlay block-ui-visible"></div>'+
'<div class="block-ui-message-container ">'+
'<div class="block-ui-message">'+
'<div class="loading-outer">'+
'<div class="loading-logo"></div>'+
' <div class="loading-circle"></div>'+
'</div>'+
'</div>'+
'<div class="loading-text ">数据正在加载中</div>'+
' </div>'+
'</div>');
},
render: function(container){
this.renderUI();
if($("#myblockui").length){
this.token++;
}else{
$(container || document.body).append(this.boundingBox);
this.token++;
}
},
start: function(){
this.render();
},
stop: function(){
this.token--;
if(this.token == 0){
$("#myblockui").remove();
}
}
})
})
显然,你需要把你插入的代码块样式设置一下:
.block-ui-message-container{width:200px; height: 60px; left: 50%; top: 50%; margin-top: -30px; margin-left: -30px; position: relative;}
.block-ui-message{border: none; background: none;}
.loading-circle{;;; -webkit-animation:loadingCircle 1.5s 0s linear both infinite;
animation:loadingCircle 1.5s 0s linear both infinite;}
@-webkit-keyframes loadingCircle{0% {transform:translate(0,0) rotate(0);}
100% {transform:translate(0,0) rotate(360deg);}
}
@keyframes loadingCircle{0% {transform:translate(0,0) rotate(0);}100% {transform:translate(0,0) rotate(360deg);}}
.loading-logo{;-webkit-animation:loadingLogo 1s 0.2s linear both infinite;-webkit-transform-origin:center bottom;animation:loadingLogo 1s 0.2s linear both infinite;transform-origin:center bottom;}
@-webkit-keyframes loadingLogo{0%{transform:translate(0,0) scale(1,1);}15%{transform:translate(0,4px) scale(1,1.02);}26%{transform:translate(0,-6px) scale(1,1);}38%{transform:translate(0,0) scale(1,1);}50%{transform:translate(0,0) scale(1,1);}100%{ransform:translate(0,0) scale(1,1);}}@keyframes loadingLogo{0%{transform:translate(0,0) scale(1,1);}15%{transform:translate(0,4px) scale(1,1.02);}26%{transform:translate(0,-6px) scale(1,1);}38%{transform:translate(0,0) scale(1,1);}50%{transform:translate(0,0) scale(1,1);}100%{ransform:translate(0,0) scale(1,1);}}.loading-text{position:absolute;bottom:-24px;width:120px;text-align:center;left:-30px;font-size:14px;color:#fff;}.block-ui-overlay.block-ui-visible{opacity:0.6;-ms-filter:"alpha(opacity=60)";}
这样就简单地实现了缓冲加载的效果。
结构-行为-样式-Jquery实现延迟加载特效(数据缓冲特效)的更多相关文章
- jQuery图片延迟加载插件jQuery.lazyload
插件描述:jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度.在某些情况下,它也能帮助减轻服务器负载. 使用方法 引用jquery和jquery.lazy ...
- PHP+Mysql+jQuery实现地图区域数据统计-展示数据
我们要在地图上有限的区块内展示更多的信息,更好的办法是通过地图交互来实现.本文将给大家讲解通过鼠标滑动到地图指定省份区域,在弹出的提示框中显示对应省份的数据信息.适用于数据统计和地图区块展示等场景. ...
- JQuery + XML作为前后台数据交换格式实践
JQuery + xml作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ xml作为一种 ...
- JQuery + JSON作为前后台数据交换格式实践
JQuery + JSON作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ JSON作为 ...
- JQuery Easy Ui dataGrid 数据表格 ---制作查询下拉菜单
JQuery Easy Ui dataGrid 数据表格 数据表格 - DataGrid 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值.. 数 ...
- Jquery解析Json格式数据
今天稍微学习了一下Json,JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的 ...
- 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件
jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...
- 读jQuery之六(缓存数据)
很多同学在项目中都喜欢将数据存储在HTMLElement属性上,如 1 2 3 4 <div data="some data">Test</div> < ...
- jQuery格式化显示json数据
一.概述 JSONView 在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview demo地址:h ...
随机推荐
- sql点滴42—mysql中的时间转换
原文:sql点滴42-mysql中的时间转换 UNIX时间戳转换为日期用函数: FROM_UNIXTIME() select FROM_UNIXTIME(1156219870); 日期转换为UNIX时 ...
- 如果你使用上述这段12行的JavaScript代码,就可以能让firefox、chrome、safari浏览器崩溃,而且还能让iphone重启,安卓手机闪退!
<html> <body> <script> var total=""; for (var i=0;i<1000000;i ) { tot ...
- 批处理中set截取字符具体解释
set截取字符具体解释 在批处理中,set的功能有点繁杂:设置变量.显示环境变量的名及值.做算术运算.等待用户的输入.字符串截取.替换字符串,是我们经常使用的命令之中的一个. 在字符串截取方面,新手 ...
- Qlik Sense Desktop
2014年新一代的报表利器 Qlik Sense Desktop 初步体验 2014-09-22 12:45 by BIWORK, 974 阅读, 7 评论, 收藏, 编辑 Qlik Sense De ...
- 在 InstantRails 环境下,安装使用 redMine
在 InstantRails 环境下,安装使用 redMine 分类: Redmine2009-06-01 10:35 732人阅读 评论(0) 收藏 举报 characterrailsencodin ...
- jQuery 1.9 移除了 $.browser 的替代方法
jQuery 从 1.9 版开始,移除了 $.browser 和 $.browser.version , 取而代之的是 $.support . 在更新的 2.0 版本中,将不再支持 IE 6/7/8. ...
- ASP.NET MVC路由(5)
ASP.NET MVC路由(五) 前言 前面的篇幅讲解了MVC中的路由系统,只是大概的一个实现流程,让大家更清晰路由系统在MVC中所做的以及所在的位置,通过模糊的概念描述.思维导图没法让您看到路由的实 ...
- 微软 PowerShell Script Explorer
微软 PowerShell Script Explorer 满血复活,正式发布 一年前的今天,微软在其Windows PowerShell官方博客声明中止 ‘Script Explorer’ 应用程序 ...
- UML和绘图工具Visio介绍
UML系列01之 UML和绘图工具Visio介绍 概要 UML,全称是Unified Modeling Language,中文是"统一建模语言".通俗点说,UML是一种创建模型的语 ...
- SQL练习1关于插入删除,修改,单表查询
--创建数据库create database studentsDB --创建表create table student( id int primary key, stuid char(10), stu ...