最近在做一个地产项目的过程中,原来用的延迟加载的插件在IE下会使浏览器突然缩小,这个让客户很不满意,于是就考虑到兼容性的问题决定自己写一个插件。思路:定义一个代码块,手动加载到页面,然后手动删除。   在项目中调用 的时候就可以实例化这个插件,调用他的打开关闭方法,这个插件主要是在Ajax请求数据的时候需要。

Js代码:

  1. define([ 'jquery'], function($){
  2. function BlockUI(){
  3. this.boundingBox = null;
  4. }
  5.  
  6. BlockUI.prototype = $.extend({}, {
  7. renderUI: function(){
  8. this.boundingBox = $('<div class="ng-scope block-ui">'+
  9. '<div class="block-ui-overlay block-ui-visible"></div>'+
  10. '<div class="block-ui-message-container ">'+
  11. '<div class="block-ui-message">'+
  12. '<div class="loading-outer">'+
  13. '<div class="loading-logo"></div>'+
  14. ' <div class="loading-circle"></div>'+
  15. '</div>'+
  16. '</div>'+
  17. '<div class="loading-text ">数据正在加载中</div>'+
  18. ' </div>'+
  19. '</div>');
  20. this.boundingBox.appendTo(document.body);
  21. },
  22. render: function(container){
  23. this.renderUI();
  24. $(container || document.body).append(this.boundingBox);
  25. },
  26. start: function(){
  27. this.render();
  28. },
  29. stop: function(){
  30. this.boundingBox.off();
  31. this.boundingBox.remove();
  32. }
  33. })
  34. return {
  35. BlockUI: BlockUI
  36. }
  37. })

因为工作需要,本人又把这个插件优化了下,直接扩展Jquery来编写。优化之后,页面上不管多少请求,始终只有一个Mask,这样效果更理想。

  1. define([ 'jquery'], function($){
  2. $.blockUI = $.extend({},{
  3. token:0,
  4. renderUI: function(){
  5. this.boundingBox = $('<div id="myblockui" class="ng-scope block-ui">'+
  6. '<div class="block-ui-overlay block-ui-visible"></div>'+
  7. '<div class="block-ui-message-container ">'+
  8. '<div class="block-ui-message">'+
  9. '<div class="loading-outer">'+
  10. '<div class="loading-logo"></div>'+
  11. ' <div class="loading-circle"></div>'+
  12. '</div>'+
  13. '</div>'+
  14. '<div class="loading-text ">数据正在加载中</div>'+
  15. ' </div>'+
  16. '</div>');
  17. },
  18. render: function(container){
  19. this.renderUI();
  20. if($("#myblockui").length){
  21. this.token++;
  22. }else{
  23. $(container || document.body).append(this.boundingBox);
  24. this.token++;
  25. }
  26. },
  27. start: function(){
  28. this.render();
  29. },
  30. stop: function(){
  31. this.token--;
  32. if(this.token == 0){
  33. $("#myblockui").remove();
  34. }
  35. }
  36. })
  37.  
  38. })

显然,你需要把你插入的代码块样式设置一下:

  1. .block-ui-message-container{width:200px; height: 60px; left: 50%; top: 50%; margin-top: -30px; margin-left: -30px; position: relative;}
  2. .block-ui-message{border: none; background: none;}
  3. .loading-circle{;;; -webkit-animation:loadingCircle 1.5s 0s linear both infinite;
  4. animation:loadingCircle 1.5s 0s linear both infinite;}
  5. @-webkit-keyframes loadingCircle{0% {transform:translate(0,0) rotate(0);}
  6. 100% {transform:translate(0,0) rotate(360deg);}
  7. }
  8. @keyframes loadingCircle{0% {transform:translate(0,0) rotate(0);}100% {transform:translate(0,0) rotate(360deg);}}
  9. .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;}
  10. @-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实现延迟加载特效(数据缓冲特效)的更多相关文章

  1. jQuery图片延迟加载插件jQuery.lazyload

      插件描述:jQuery图片延迟加载插件jQuery.lazyload,使用延迟加载在可提高网页下载速度.在某些情况下,它也能帮助减轻服务器负载. 使用方法 引用jquery和jquery.lazy ...

  2. PHP+Mysql+jQuery实现地图区域数据统计-展示数据

    我们要在地图上有限的区块内展示更多的信息,更好的办法是通过地图交互来实现.本文将给大家讲解通过鼠标滑动到地图指定省份区域,在弹出的提示框中显示对应省份的数据信息.适用于数据统计和地图区块展示等场景. ...

  3. JQuery + XML作为前后台数据交换格式实践

    JQuery + xml作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ xml作为一种 ...

  4. JQuery + JSON作为前后台数据交换格式实践

    JQuery + JSON作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ JSON作为 ...

  5. JQuery Easy Ui dataGrid 数据表格 ---制作查询下拉菜单

    JQuery Easy Ui dataGrid 数据表格 数据表格 - DataGrid 继承$.fn.panel.defaults,使用$.fn.datagrid.defaults重载默认值.. 数 ...

  6. Jquery解析Json格式数据

    今天稍微学习了一下Json,JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. JSON采用完全独立于语言的 ...

  7. 第二百二十二节,jQuery EasyUI,DataGrid(数据表格)组件

    jQuery EasyUI,DataGrid(数据表格)组件 学习要点: 1.加载方式 2.分页功能 本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于 Pa ...

  8. 读jQuery之六(缓存数据)

    很多同学在项目中都喜欢将数据存储在HTMLElement属性上,如 1 2 3 4 <div data="some data">Test</div> < ...

  9. jQuery格式化显示json数据

    一.概述 JSONView 在gitlab上面,有一个jQuery JSONView插件,地址为:https://github.com/yesmeck/jquery-jsonview demo地址:h ...

随机推荐

  1. CentOS上安装WordPress搭建博客平台

    前两天在服务器上搭建了AMP,今天试着在上面安装了一个WordPress(中文:http://cn.wordpress.org/,英文:http://wordpress.org/),我安装的是英文最新 ...

  2. Mac OSX操作系统安装和配置Zend Server 6教程(1)

    作为web开发人员,应该熟悉掌握各种系统下安装和配置web服务器与站点的技术. 随着越来越多的开发人员选择Zend Server服务器,慧都推出了在Mac OSX系统安装和配置Zend Server ...

  3. IOS开发苹果官方Sample Code及下载地址

    IOS开发苹果官方Sample Code及下载地址 在线浏览地址:https://developer.apple.com/library/ios/navigation/#section=Resourc ...

  4. lsof基本使用

    当你想在计算机上启动一个服务,电脑已经建议"port already in use",此时,可以使用lsof命令查看占用端口的进程(lsof -i:port). lsof这是LiS ...

  5. HDU 4812 D Tree 树分区+逆+hash新位置

    意甲冠军: 特定n点树 K 以下n号码是正确的点 以下n-1行给出了树的侧. 问: 所以,如果有在正确的道路点图的路径 % mod  = K 如果输出路径的两端存在. 多条路径则输出字典序最小的一条. ...

  6. mysql主从同步配置(windows环境)

    mysql主从同步配置(mysql5.5,windows环境)   A主机(作为主服务器)环境:windows8.mysql5.5 ip:192.168.1.100(自己填) B主机(作为从服务器,由 ...

  7. 【AngularJS】 2.0 版本发布

    [AngularJS] 2.0 版本发布 w5cValidator[AngularJS] 2.0 版本发布   w5cValidator 插件基于angular原有的表单验证,在原有的基础上扩展了一些 ...

  8. 在线试听功能(前端直接略过吧,适合javaEE后台开发的)

    应用场景:录音试听,MP3试听... 比如为客户提供录音功能时.客户希望录音完成试听录音,然后下载等功能.直接上代码:关键是取得录音的在服务器的地址,如:url='http://localhost:8 ...

  9. 【学习笔记】锋利的jQuery(一)选择器

    一.要点阐述 1,jQuery创建于2006年1月的一个开源项目,强调理念是“write less,do more”,压缩后大小30KB左右.. 2,jQuery里的方法都被设计程自动操作对象集合,而 ...

  10. android通过程序收起通知栏

    1.  添加权限 <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" /> 2. ...