ExtJS 自动调整表单大小
ExtJS auto-resize form
我正在使用 Extjs5,我有一个表单,我希望它可以根据它的容器自动调整大小。
目前,我有:
container->items->layout:vbox->items->layout:{type:column,columns:2}->items->my forms(由组合框和文本字段组成)
当我调整到较小的宽度时,我希望它是一列。目前它将保留 2 列,并且 space 太小而无法适应 2 列设计。有没有办法将其调整为 1 列?
如果您想使用 column
布局实现此目的,您可以侦听 resize
事件并在处理函数中调整列百分比。处理函数可能如下所示:
formResize = function (item, width, height, oldWidth, oldHeight, eOpts) {
if (!item.narrow) return;
if (oldWidth === undefined) oldWidth = 9999999;
if (oldHeight === undefined) oldHeight = 9999999;
item.suspendLayouts();
if (width <= item.narrow && oldWidth > item.narrow) {
item.items.each(function (item, i) {
if (!item.originalColumnWidth) item.originalColumnWidth = item.columnWidth;
item.columnWidth = 1;
});
}
if (width > item.narrow && oldWidth <= item.narrow) {
item.items.each(function (item, i) {
item.columnWidth = item.originalColumnWidth;
});
}
item.resumeLayouts(true);
};
这需要在正在调整的面板上定义一个名为 narrow
的 属性。您可以设置 narrow=700 以在宽度小于 700 时使用单列布局,否则保持原始布局。 originalColumnWidth 在第一次执行时保存,因此如果将表单调整为足够宽以容纳多列,则可以恢复它。
See fiddle here 附示例表格。
(使用 responsive
插件可以获得类似的结果。参见 fiddle)。
我正在使用 Extjs5,我有一个表单,我希望它可以根据它的容器自动调整大小。
目前,我有:
container->items->layout:vbox->items->layout:{type:column,columns:2}->items->my forms(由组合框和文本字段组成)
当我调整到较小的宽度时,我希望它是一列。目前它将保留 2 列,并且 space 太小而无法适应 2 列设计。有没有办法将其调整为 1 列?
如果您想使用 column
布局实现此目的,您可以侦听 resize
事件并在处理函数中调整列百分比。处理函数可能如下所示:
formResize = function (item, width, height, oldWidth, oldHeight, eOpts) {
if (!item.narrow) return;
if (oldWidth === undefined) oldWidth = 9999999;
if (oldHeight === undefined) oldHeight = 9999999;
item.suspendLayouts();
if (width <= item.narrow && oldWidth > item.narrow) {
item.items.each(function (item, i) {
if (!item.originalColumnWidth) item.originalColumnWidth = item.columnWidth;
item.columnWidth = 1;
});
}
if (width > item.narrow && oldWidth <= item.narrow) {
item.items.each(function (item, i) {
item.columnWidth = item.originalColumnWidth;
});
}
item.resumeLayouts(true);
};
这需要在正在调整的面板上定义一个名为 narrow
的 属性。您可以设置 narrow=700 以在宽度小于 700 时使用单列布局,否则保持原始布局。 originalColumnWidth 在第一次执行时保存,因此如果将表单调整为足够宽以容纳多列,则可以恢复它。
See fiddle here 附示例表格。
(使用 responsive
插件可以获得类似的结果。参见 fiddle)。