• 仿网易邮箱5.0(四):信息提示插件(tips.js)


    信息提示插件,在平常的开发中也是经常乃至的一个插件,像是一些辅助信息的提示,如:加载成功、提交信息成功或失败等等。这个插件在163邮箱中用在切换标签时提示加载状态。

    下面我们先来分析一下这个小插件需要实现的一些接口:

    1、显示时的停留时间,这个我们可以直接在实例化类时传递进去。

    2、显示内容可更新,这样一来就可以在整个页面中仅创建一个实例,然后通过不断的更新内容来达到不同信息显示的效果。如:tips.update('msg');

    3、显示,如果想实现内容可更新后再显示,就需要能够手动调用显示接口。如:tips.update('new msg').show();

    4、隐藏,显示的时候我们可以直接立即隐藏。

    5、删除,如果我们仅使用一次,或者是此操作之后页面中不再使用此插件,那么我们最好是从页面中移除而不仅仅是隐藏。

    接下来我们看下源代码:

      1 /**
      2  * 信息提示插件
      3  * @author Ly
      4  * @date 2012/11/15
      5  */
      6 ;Neter.namespace('Neter.Tips');
      7 
      8 /**
      9  * @class
     10  * @name Neter.Tips
     11  * @param {Object} options 自定义配置信息,默认配置信息如下:
     12  <pre>
     13  options = {
     14     container : document.body,            // 信息提示框架放于哪个容器中进行显示,默认为body
     15     msg       : '',                       // 信息内容
     16     showTime  : 2000,                     // 提示信息显示时间,单位毫秒,默认为2000毫秒
     17     type      : 'success'                 // 提示框类型,success(绿色)、error(红色)、aside(灰色)、warning(棕色)
     18  }
     19  </pre>
     20  */
     21 ;Neter.Tips = function(options) {
     22     var _this = this;
     23     
     24     this.defaults = {
     25         container : document.body,            // 信息提示框架放于哪个容器中进行显示,默认为body
     26         msg       : '',                       // 信息内容
     27         showTime  : 2000,                     // 提示信息显示时间,单位毫秒,默认为2000毫秒
     28         type      : 'success'                 // 提示框类型,success(绿色)、error(红色)、aside(灰色)、warning(棕色)
     29     };
     30     
     31     Neter.apply(this.defaults, options);
     32     
     33     this.handler = {
     34         container : $(this.defaults.container),
     35         tips      : null
     36     };
     37     
     38     this.method = {
     39         /**
     40          * 创建框架
     41          * @ignore
     42          */
     43         create : function() {
     44             var defaults = _this.defaults,
     45                 handler  = _this.handler;
     46             
     47             handler.tips = $('<div></div>').addClass('neter-tips')
     48                 .html(defaults.msg)
     49                 .appendTo(defaults.container);
     50             
     51             return this;
     52         }
     53     };
     54 };
     55 
     56 ;Neter.apply(Neter.Tips.prototype, {
     57     /**
     58      * 渲染插件,渲染后仅是将插件添加到页面中,若要显示需调用show方法
     59      * @function
     60      * @name Neter.Tips.prototype.render
     61      * @return {Neter.Tips} 返回插件的引用
     62      */
     63     render : function() {
     64         this.method.create();
     65         
     66         return this;
     67     },
     68     /**
     69      * 获取插件的DOM对象
     70      * @function
     71      * @name Neter.Tips.prototype.get
     72      * @return {jQueryDOM} 返回当前插件的DOM对象,经过jQuery封装过。
     73      */
     74     get : function() {
     75         return this.handler.tips;
     76     },
     77     /**
     78      * 更新插件的消息内容
     79      * @function
     80      * @name Neter.Tips.prototype.update
     81      * @param {String} msg 消息内容
     82      * @return {Neter.Tips} 返回插件的引用
     83      */
     84     update : function(msg) {
     85         this.defaults.msg = msg || this.defaults.msg;
     86         
     87         return this;
     88     },
     89     /**
     90      * 显示插件
     91      * @function
     92      * @name Neter.Tips.prototype.show
     93      * @param {String} [type] 指定信息框的类型,可以省略,省略则使用上次设置的类型
     94      * @param {Boolean} [showType=false] 显示方式,默认为false,即以动画方式来显示,true为立即显示,并且不自动隐藏
     95      * @return {Neter.Tips} 返回插件的引用
     96      */
     97     show : function(type, showType) {
     98         var defaults = this.defaults,
     99             tips     = this.handler.tips;
    100         
    101         if (!tips) { return this; }
    102         
    103         defaults.type = type || defaults.type;
    104         
    105         tips.html(defaults.msg)
    106             .removeClass('neter-tips-success neter-tips-error neter-tips-aside neter-tips-warning')
    107             .addClass('neter-tips-' + defaults.type)
    108             .css({ marginLeft : -tips.outerWidth() / 2 });
    109         
    110         if (showType) {
    111             tips.css({ top : 0 }).show();
    112         } else {
    113             tips.animate({ top : 0 })
    114                 .delay(defaults.showTime)
    115                 .animate({ top : -tips.outerHeight() }, 'slow');
    116         }
    117         
    118         return this;
    119     },
    120     /**
    121      * 隐藏插件
    122      * @function
    123      * @name Neter.Tips.prototype.hide
    124      * @return {Neter.Tips} 返回插件的引用
    125      */
    126     hide : function() {
    127         this.handler.tips && this.handler.tips.animate({ top : -this.handler.tips.outerHeight() }, 'slow');
    128         
    129         return this;
    130     },
    131     /**
    132      * 删除插件,删除后不能再调用show进行显示
    133      * @function
    134      * @name Neter.Tips.prototype.remove
    135      * @return {Object} 返回null
    136      */
    137     remove : function() {
    138         this.handler.tips.empty().remove();
    139         this.handler.tips = null;
    140 
    141         return null;
    142     }
    143 });
    tips.js

    这里面也没有什么值得说明的,代码比较简单,相信大家一看就明白。下面就列几种使用方法:

    1 // 1. 直接创建并且显示
    2 new Neter.Tips({ msg : '提交成功'}).render().show();
    3 
    4 // 2. 指定类型,支持:success(绿色)、error(红色)、aside(灰色)、warning(棕色)
    5 new Neter.Tips({ msg : '提交数据失败', type : 'error' }).render().show();
    6 
    7 // 3. 使用图片作为显示内容
    8 new Neter.Tips({ msg : $('<img>').attr('src', 'info.png') }).render();

    也可以从这里单击下载示例文件。

  • 相关阅读:
    关于 MySQL 的 General Log 功能
    Oracle VirtualBox & CentOS 7.9 Guest
    CentOS 7 环境下添加拥有 sudo 权限的用户
    CentOS 7 环境下部署 MySQL 5.7 服务
    CentOS 7 环境下部署 Metasploit Framework & Armitage 团队服务
    CentOS 7 环境下部署 Docker 服务
    window10下安装MySQL
    sticky
    Eclipse 打包Mac产品IDE 记录
    Halcon图像处理中的坐标系
  • 原文地址:https://www.cnblogs.com/AUOONG/p/3432913.html
Copyright © 2020-2023  润新知