`
kimmking
  • 浏览: 546615 次
  • 性别: Icon_minigender_1
  • 来自: 中华大丈夫学院
社区版块
存档分类
最新评论

什么样的Element可以mask?

    博客分类:
  • ext
阅读更多
mask的效果就是指 在现有的UI组件上蒙上一层(一般是半透明的)“蒙版”,使其下面的UI都不可操作。
比如模式window,Ext.msg.alert时的背景。

关于基本的介绍,这儿有一篇:
丫梨的笔记本:ExtJs中关于mask()的应用说明
但是文中说“【其实蒙版效果也可完全作用于任何一个组件。通过调用Element的mask()方法即可】”是不对的。

Ext 2.0 API中 Ext.Element:
mask( [String msg], [String msgCls] ) : Element
Puts a mask over this element to disable user interaction. Requires core.css. This method can only be applied to elem...
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.
最后一句是:此方法只能用在可以接受节点的元素上。

我一直没有明白“接受节点的元素”是什么意思。难度是dhtml定义的?
但是目前的实验情况表明:
1、body window panel是可以“接受节点的元素”
2、所有的form中的field的el不是“接受节点的元素”,调用mask(),IE会出错:该操作的目标原件无效,ff没有反应。
3、TriggerField的子类,combo,datefield等getEl().parent().mask有效(IE,ff)。
textfield的getEl().parent().mask在IE下报错,ff下有效,但是text的位置会向右偏移很多。
4、IE下,field不停的parent(),发现:第一个包含所有field的element的mask是有效的。其到整个container之间的层次的div都是有效的。

即一个element是可以mask的,则包含他的其他的element都是可以mask的。

后头看看IE报的错,打开js调试器(.net 2005/2008),看到出错代码在ext-all-debug.js的228行。
Ext.DomHelper中的(Ext v2.1)
 insertHtml : function(where, el, html){
...
el.insertAdjacentHTML('BeforeEnd', html);...


看了下el,tag:input,就是textfield的文本框了。
baidu下insertAdjacentHTML,发现table input tbody iframe等不支持。明天找找dhtml手册,看看还有什么东西不支持。
还是没弄清楚为什么有的element不支持mask? 目前的猜想是不能做为container的都不支持。
就是说<tag></tag>中间不能有内容的都不支持mask。

但是,什么样的支持mask呢?
分享到:
评论
2 楼 kimmking 2008-08-02  
已经提交了bug到ext-forum
1 楼 kimmking 2008-08-02  
通过熬夜(555...)分析el.dom.outerHTML,终于初步找到答案。
1、内部不支持appchild的元素,不能mask

2、对于div,比如一个textfield的input所在的div,insertAdjacentHTML是没有问题的,可以看到添加的class为ext-el-mask的一个div在这个div的里面,input标签的后面,但是这个用来mask的div的width竟然是0??怪不得没有反应。

Ext.get("p").mask()可以
<div id="p" style="WIDTH: 237px">
			sdf
</div>


Ext.get("p").mask()不可以
<div id="p">
			sdf
</div>

or

<div id="p" width="100">
			sdf
</div>


通过一系统的调试,发现一个div(ext中的el,ct多数都是dom为div的element)可以被mask的唯一条件是必须显示的申明style="WIDTH:xxx,然后插入的用来mask的
div有相同的width。”<div width=xx”都不可以。
对于一个TriggerField,其有一个div中包含几个元素组成(一般一个text,一个img),这个div的style="WIDTH:xxx在组件被创建时已经显示的指定了。
对于一个textfield,声明时没有cls:"width:xx"或是width:xx的话,其自己对齐自己容器ct的宽度,因而没有显示的style:width,造成了这个mask的bug。
问题分析差不多了,就是在创建mask-div时的width不正确的问题。
呵呵,有时间我再看能不能加个补丁fix这个问题。




相关推荐

    element-plus(element-plus@2.8.1/element-plus-2.8.1) 本地离线资源

    /npm/element-plus@2.8.1/dist 37.2K /npm/element-plus@2.8.1/es 36.4K /npm/element-plus@2.8.1/lib /npm/element-plus@2.8.1/theme-chalk 394 /npm/element-plus@2.8.1/attributes.json /npm/element-...

    element-plus(element-plus@2.5.5) 本地离线资源

    element-plus@2.5.5 本地离线资源,适用于没有网络连接、搭建自己的cdn等用途。 All files(包含文件) /npm/element-plus@2.5.5/dist /npm/element-plus@2.5.5/es /npm/element-plus@2.5.5/lib /npm/element-...

    element-ui.rar element-ui核心库压缩包

    这里的 `Vue.use(ElementUI)` 是将 Element UI 注册为 Vue 的全局组件,这样在任何 Vue 实例中都可以直接使用 Element UI 提供的组件。 Element UI 的每个组件都有详尽的文档和示例,方便开发者理解和使用。例如,...

    element-ui离线

    离线包则解决了在无网络环境下学习和开发的问题,使开发者可以随时随地查阅和使用 Element UI 的功能。 总结起来,"element-ui离线" 是 Vue.js 社区中一个非常有价值的资源,尤其对于那些需要在离线环境中工作的...

    element-ui资源包

    这样,你就可以在项目中通过 npm 或 yarn 来引用 Element UI。 在你的项目主入口文件(通常是 `main.js` 或 `app.js`)中,需要引入 Element UI 并注册到 Vue 实例中: ```javascript import Vue from 'vue'; ...

    element深色系资源

    在 Element 官网上,你可以找到一个名为“主题定制”的功能。通过这个功能,你可以上传一个配置文件 `config.json`,该文件定义了颜色、字体等视觉元素的自定义设置。在提供的 `dark` 文件中,可能就包含了一个预设...

    element-ui离线文档包

    这个离线文档包包含了 Element UI 的 CSS 和 JS 文件,使得开发者在本地环境中可以无需网络连接就能进行开发工作,提高了开发效率。 首先,Element UI 的 CSS 文件主要包括样式表(如 `element-ui.css` 或 `element...

    Element_Components_v2.1.0.rplib

    这个库使得Axure用户可以直接在设计阶段利用Element UI的丰富组件,无需从零开始创建每个元素,大大节省了时间和精力。 在导入组件库之前,确保你已经安装了Axure RP。然后,你需要下载"Element_Components_v2.1.0....

    Axure Element UI元件库

    通过将Element UI元件库集成到Axure中,设计师可以使用与最终产品相一致的组件进行设计,这确保了设计与开发之间的无缝对接,减少了沟通成本和后期调整的可能性。 **2. 导入Element UI元件库** 导入Element UI元件...

    element plus 手册离线

    它与 Element Plus 结合使用,可以在 Element Plus 的组件中嵌入 ECharts 图表,实现数据驱动的可视化展示。在 Element Plus 的文档中,可能有关于如何集成和使用 ECharts 的教程或示例。 总的来说,"element plus ...

    element-plus离线文档

    1. **获取文档源码**:首先,你需要下载 Element Plus 的文档源码,这通常可以通过访问其 GitHub 仓库或者官方发布页面来完成。源码可能包含 Markdown 文件、配置文件、样式表和 JavaScript 代码。 2. **配置 Node ...

    element JS资源库(本地执行)下载

    Element UI 是一个基于 Vue.js 的开源组件库,主要用于构建用户界面。它提供了丰富的可复用...通过正确引用这些文件,你可以充分利用Element UI的组件,如按钮、表格、对话框、通知等,提升应用的用户体验和开发效率。

    Axure Element 元件库

    Axure Element元件库是专为使用Axure RP进行原型设计的用户所打造的一款资源集合,它极大地提高了设计效率,使得设计师能够快速构建出高质量的交互原型。Axure RP是一款广泛应用于产品设计领域的原型设计工具,它...

    Element元件集合.rar

    1. **Element UI元件库.rplib**:这是 Element UI 的主要组件库,包含了上述提到的各种组件,可以直接在 AXURE 中拖拽使用,帮助设计师快速构建 Element UI 风格的原型。 2. **后台常用图标.rplib**:这部分可能...

    element.js文件

    在 "element.js" 文件中,我们可以预期它包含了一系列自定义元素或组件,这些元素可能包括按钮、表单、菜单等常见的UI元素。这些元素通常被设计为可复用和高度定制的,以便在不同项目中轻松集成。JavaScript库如...

    Element-UI本地引入

    6. **使用组件**:现在你已经成功本地引入了Element-UI,可以像平常一样在Vue组件中使用它的各种组件了。例如,添加一个按钮: ```html 主要按钮 ``` 7. **图标处理**:Element-UI使用Web字体图标,因此需要确保...

    在vue项目中升级更新element ui版本.docx

    #### 二、为什么要升级Element UI? 随着技术的发展和用户需求的变化,Element UI会不断地进行更新和迭代,新版本通常包含更多的功能、更好的性能优化以及修复已知的问题。因此,对于现有的Vue项目来说,及时地升级...

    vue+element后台管理系统模板1

    Vue可以通过路由配置来设定未找到页面的跳转,Element UI则可以提供定制化的404页面设计。 8. **全屏功能**:全屏功能对于查看大量数据或编辑工作很有帮助。Vue和Element UI可以实现监听键盘事件或点击按钮触发全屏...

    element-2.15.12离线包下载

    在描述中,"element-2.15.12离线包下载"简单地重申了标题信息,暗示用户可以获取并安装这个特定版本的Element UI。 标签"Javascript"和"elementui"进一步明确了我们正在处理的是JavaScript的前端框架,特别是...

Global site tag (gtag.js) - Google Analytics