yiminghe 发表于 2013-1-29 07:35:05

简析 Ext.Element.mask()

mask : function () {}
Puts a mask over this element to disable user interaction. Requires core.css.
This method can only be applied to elements which accept child nodes.
 
只有该元素能够添加子元素时,才能够调用mask成功,也就是说,一般只有块状元素才能有遮罩层。
 
mask: function (msg, msgCls) {    //如果当前元素没有定位 则要定位 ,因为灰色mask层要相对当前元素绝对定位 0,0    if (this.getStyle("position") == "static") {      this.addClass("x-masked-relative");    }    //mask 文字信息    if (this._maskMsg) {      this._maskMsg.remove();    }    //mask 层    if (this._mask) {      this._mask.remove();    }、    //创建mask层    this._mask = Ext.DomHelper.append(this.dom, {      cls: "ext-el-mask"    },    true);    /*          绝对定位         absolute         top 0 left 0            z-index:9999          目的是要遮住当前元素      */    this.addClass("x-masked");    this._mask.setDisplayed(true);    /*            同理设置遮蔽文字并调用center相对当前元素中 ,center() TODO 简析       */    if (typeof msg == 'string') {      this._maskMsg = Ext.DomHelper.append(this.dom, {            cls: "ext-el-mask-msg",            cn: {                tag: 'div'            }      },      true);      var mm = this._maskMsg;      mm.dom.className = msgCls ? "ext-el-mask-msg " + msgCls : "ext-el-mask-msg";      mm.dom.firstChild.innerHTML = msg;      mm.setDisplayed(true);      mm.center(this);    }    //设置 mask层 大小 刚好覆盖住 当前元素 ,在当前元素之上    if (Ext.isIE && !(Ext.isIE7 && Ext.isStrict) && this.getStyle('height') == 'auto') { // ie will not expand full height automatically      this._mask.setSize(this.getWidth(), this.getHeight());    }    return this._mask;},      这是对一般元素的 mask ,但是遇到要mask的是 body 时就会有问题了,所以ext里没 Ext.getBody().mask(),而是单独处理了,参见 Ext.window.show(),下次解析。
页: [1]
查看完整版本: 简析 Ext.Element.mask()