zoukankan      html  css  js  c++  java
  • mui扩展插件mui.showLoading加载框

    写在前面:
    好像mui目前dialog系列唯独缺少showLoading加载框(加载中)组件,为了统一组件样式和体验,写了这么一个扩展插件。
    CSS和JS代码耦合性应该还是较低的,不妥之处欢迎指教!
    优点:可以同时兼容Html5和plus,不必为不同环境单独分别Loading组件。
    缺点:在页面嵌套情况下,遮罩仅对当前页面起作用。

    使用方法:
    显示加载框:

    mui.showLoading("正在加载..","div"); //加载文字和类型,plus环境中类型为div时强制以div方式显示

    隐藏加载框:

    mui.hideLoading(callback);//隐藏后的回调函数

    注意:
    加载框只会显示一个,多次调用showLoading只会显示最后一次调用的内容。

    Javascript代码:

     1 //扩展mui.showLoading
     2 (function($, window) {
     3     //显示加载框
     4     $.showLoading = function(message,type) {
     5         if ($.os.plus && type !== 'div') {
     6             $.plusReady(function() {
     7                 plus.nativeUI.showWaiting(message);
     8             });
     9         } else {
    10             var html = '';
    11             html += '<i class="mui-spinner mui-spinner-white"></i>';
    12             html += '<p class="text">' + (message || "数据加载中") + '</p>';
    13 
    14             //遮罩层
    15             var mask=document.getElementsByClassName("mui-show-loading-mask");
    16             if(mask.length==0){
    17                 mask = document.createElement('div');
    18                 mask.classList.add("mui-show-loading-mask");
    19                 document.body.appendChild(mask);
    20                 mask.addEventListener("touchmove", function(e){e.stopPropagation();e.preventDefault();});
    21             }else{
    22                 mask[0].classList.remove("mui-show-loading-mask-hidden");
    23             }
    24             //加载框
    25             var toast=document.getElementsByClassName("mui-show-loading");
    26             if(toast.length==0){
    27                 toast = document.createElement('div');
    28                 toast.classList.add("mui-show-loading");
    29                 toast.classList.add('loading-visible');
    30                 document.body.appendChild(toast);
    31                 toast.innerHTML = html;
    32                 toast.addEventListener("touchmove", function(e){e.stopPropagation();e.preventDefault();});
    33             }else{
    34                 toast[0].innerHTML = html;
    35                 toast[0].classList.add("loading-visible");
    36             }
    37         }   
    38     };
    39 
    40     //隐藏加载框
    41       $.hideLoading = function(callback) {
    42         if ($.os.plus) {
    43             $.plusReady(function() {
    44                 plus.nativeUI.closeWaiting();
    45             });
    46         } 
    47         var mask=document.getElementsByClassName("mui-show-loading-mask");
    48         var toast=document.getElementsByClassName("mui-show-loading");
    49         if(mask.length>0){
    50             mask[0].classList.add("mui-show-loading-mask-hidden");
    51         }
    52         if(toast.length>0){
    53             toast[0].classList.remove("loading-visible");
    54             callback && callback();
    55         }
    56       }
    57 })(mui, window);

    CSS代码

     1 /*----------------mui.showLoading---------------*/
     2 .mui-show-loading {
     3     position: fixed;
     4     padding: 5px;
     5      120px;
     6     min-height: 120px;
     7     top: 45%;
     8     left: 50%;
     9     margin-left: -60px;
    10     background: rgba(0, 0, 0, 0.6);
    11     text-align: center;
    12     border-radius: 5px;
    13     color: #FFFFFF;
    14     visibility: hidden;
    15     margin: 0;
    16     z-index: 2000;
    17 
    18     -webkit-transition-duration: .2s;
    19     transition-duration: .2s;
    20     opacity: 0;
    21     -webkit-transform: scale(0.9) translate(-50%, -50%);
    22     transform: scale(0.9) translate(-50%, -50%);
    23     -webkit-transform-origin: 0 0;
    24     transform-origin: 0 0;
    25 }
    26 .mui-show-loading.loading-visible {
    27     opacity: 1;
    28     visibility: visible;
    29     -webkit-transform: scale(1) translate(-50%, -50%);
    30     transform: scale(1) translate(-50%, -50%);
    31 }
    32 .mui-show-loading .mui-spinner{
    33     margin-top: 24px;
    34      36px;
    35     height: 36px;
    36 }
    37 .mui-show-loading .text {
    38     line-height: 1.6;
    39     font-family: -apple-system-font,"Helvetica Neue",sans-serif;
    40     font-size: 14px;
    41     margin: 10px 0 0;
    42     color: #fff;
    43 }
    44 
    45 .mui-show-loading-mask {
    46   position: fixed;
    47   z-index: 1000;
    48   top: 0;
    49   right: 0;
    50   left: 0;
    51   bottom: 0;
    52 }
    53 .mui-show-loading-mask-hidden{
    54     display: none !important;
    55 }

    预览效果: 

    php开发交流群: 87710564
  • 相关阅读:
    HDOJ 3265 Posters (线段树+扫描线求矩形面积并)
    HDOJ 2243 考研路茫茫——单词情结(自动机DP+矩阵快速幂和)
    POJ 1389 Area of Simple Polygons (离散化求矩形面积并)
    POJ 3691 DNA repair(自动机DP)
    POJ 1151 Atlantis (离散化求矩形面积并)
    备份—何为备份?
    健康,人生第一要事
    x200 降噪手记
    好书推荐《系统管理员的时间管理》
    计算机加入域全过程截图
  • 原文地址:https://www.cnblogs.com/wangdeguao/p/9109267.html
Copyright © 2011-2022 走看看