css - ExtJS 中禁用组件的样式不一致

标签 css extjs

我有一个 ExtJS 表单,它使用 hbox-layout 容器来创建包含表单输入的句子,并且需要在特定条件下禁用该表单。 hbox-layout 容器有一系列radiotextcheckboxtextfield 组件。你可以看一个例子 on jsfiddle .

This is an answered question here on SO that doesn't fully work for me因为如果禁用不是字段的内容(例如我正在使用的 text 组件),禁用样式会有所不同 - 它似乎会屏蔽组件而不是仅仅使文本变灰。当禁用嵌套组件时,蒙版渐变会叠加。 this jsfiddle 说明了这种情况的示例.

有没有一种方法可以覆盖 text 在禁用时如何处理其样式?我认为这可能是最简单的解决方案。

最佳答案

您必须亲自挑选每个样式修复,但是是的,这是完全可能的。只需 addCls 为您的 CSS 提供一个钩子(Hook)...

例如,使用以下 CSS:

.my-disabled-ct text {
    opacity: .3;
}

您可以使用以下代码为字段和文本项提供类似的禁用外观:

var rootCt = Ext.getCmp('lotsOfItems');
rootCt.query('field').forEach(function(field) {
    field.disable();
});
rootCt.query('container').forEach(function(ct) {
    ct.addCls('my-disabled-ct');
});

你可能应该避免在字段上使用 disable,因为 Ext 然后在它们上面放置了一个掩码(尽管你可能可以用 CSS 隐藏它)。

但是,您可以添加类并将 CSS 直接定位到文本项,为什么不呢?在这种情况下,您将查询“文本”并使用 addCls 使用这种 CSS:

text.my-disabled-cls {opacity: .3;}

不用说,通过使用相同的查询和 removeCls 方法删除 CSS 类,您可以将组件恢复为“未禁用”。

关于css - ExtJS 中禁用组件的样式不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21734143/

相关文章:

extjs - 如何从网格的行 Ext JS 中获取数据

extjs - 未捕获的TypeError : Cannot call method 'getLeft' of undefined

javascript - 单击 Ext.menu.Menu 中的菜单项

html - Internet Explorer 兼容性灾难

jquery - 将 A 标签替换为任何其他标签

html - 一个 html 格式的标签,后跟一个小的 png 图像

extjs - 一旦商店有数据就会触发的事件

css - Safari CSS 文本不显示

html - 在 html 页面上定位多个 d3 图的问题

EXTJS如何在没有声明id的情况下获取组件?