六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 217|回复: 0

简析 Ext.Element.mask()

[复制链接]

升级  12%

172

主题

172

主题

172

主题

进士

Rank: 4

积分
560
 楼主| 发表于 2013-2-7 23:28:04 | 显示全部楼层 |阅读模式
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(),下次解析。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表