docs: function() {
      var self = this;
  
      // 遮罩层
      if (self.option('mask') && !self.mask) {
        self.mask = new Mask({
          autoShow: self.option('effect') === 'none',
          baseElement: self.option('baseElement'),
          container: self.element,
          css: {
            position: self.option('maskFixed') ? 'fixed' : self.option('css/position')
          },
          delegates: {
            'keydown': function(e) {
              (e.keyCode === 27) && self.close();
            },
            'click': function(e) {
              // shaking
              self.stop()
                .animate({
                  left: '-=10'
                }, 40)
                .animate({
                  left: '+=20'
                }, 80)
                .animate({
                  left: '-=20'
                }, 80)
                .animate({
                  left: '+=10'
                }, 40);
            }
          },
          effect: self.option('effect'),
          insert: function() {
            this.container.before(this.element);
          }
        });
  
        self.show(function() {
          this.mask && this.mask.show();
        }).hide(function() {
          this.mask && this.mask.hide();
        });
      }
    }