ExtJS 5.1 - 在厨房水槽中实施居中布局示例?
ExtJS 5.1 - Implementing the Center Layout example in the Kitchen Sink?
我正在创建一个 Web 应用程序,我希望面板完全位于其父面板的中心。我正在通过 ExtJS5 的 Kitchen Sink 寻找布局示例,我 found this one.
它将面板完美地放在中间,它不会使用 hbox 或 vbox 作弊,然后将 pack 和 align 属性设置为居中和居中。
这是他使用的代码:
Ext.define('KitchenSink.view.layout.Center', {
extend: 'Ext.container.Container',
requires: [
'Ext.layout.container.Center'
],
xtype: 'layout-center',
width: 500,
height: 400,
layout: 'center',
items: {
title: 'Centered Panel: 75% of container width and 95% height',
border: true,
layout: 'center',
scrollable: true,
width: '75%',
height: '95%',
bodyPadding: '20 0',
items: [
{
title: 'Inner Centered Panel',
html: 'Fixed 300px wide and full height. The container panel will also autoscroll if narrower than 300px.',
width: 300,
height: '100%',
frame: true,
bodyPadding: '10 20'
}
]
}
});
这是它的样子:
我喜欢这个的原因是第一个内面板的宽度和高度完全基于百分比。如果我尝试使用 hbox 或 vbox,我需要将宽度或高度设置为固定数字。
我正在使用 Sencha Architect,但出于某种原因,我找不到面板、容器和视口元素的布局类型中心。我还在我的 requires
中包含了 Ext.layout.container.Center
但仍然没有骰子。
有人知道如何在 Sencha Architect 中实现这个 Kitchen Sink 示例吗?
这是一个错误https://www.sencha.com/forum/showthread.php?293050
但是您可以使用 SA 中的进程配置功能轻松克服任何此类问题。
Select 您的 class 您想要编辑特殊配置的位置并单击添加 processCofnig
接下来在生成的函数中,您可以根据需要以任何方式编辑配置。
processMyContainer: function(config) {
config.layout = "center";
}
使用进程配置的唯一缺点是您不会在 SA 设计视图中看到它设置的设置 - 但当您预览应用程序时,您会看到它。
这是我对 class 的最终代码:
Ext.define('MyApp.view.MyContainer', {
extend: 'Ext.container.Container',
alias: 'widget.mycontainer',
requires: [
'MyApp.view.MyContainerViewModel',
'Ext.panel.Panel'
],
viewModel: {
type: 'mycontainer'
},
height: 800,
width: 600,
initConfig: function(instanceConfig) {
var me = this,
config = {
items: [
me.processMainPAnel({
xtype: 'panel',
height: '95%',
width: '75%',
bodyPadding: '20 0',
title: 'Centered Panel: 75% of container width and 95% height',
items: [
{
xtype: 'panel',
height: '100%',
html: 'Fixed 300px wide and full height. The container panel will also autoscroll if narrower than 300px.',
width: 300,
bodyPadding: '10 20',
title: 'Inner Centered Panel'
}
]
})
]
};
me.processMyContainer(config);
if (instanceConfig) {
me.getConfigurator().merge(me, config, instanceConfig);
}
return me.callParent([config]);
},
processMainPAnel: function(config) {
config.layout = "center";
return config;
},
processMyContainer: function(config) {
config.layout = "center";
}
});
这是浏览器中的结果:
我正在创建一个 Web 应用程序,我希望面板完全位于其父面板的中心。我正在通过 ExtJS5 的 Kitchen Sink 寻找布局示例,我 found this one.
它将面板完美地放在中间,它不会使用 hbox 或 vbox 作弊,然后将 pack 和 align 属性设置为居中和居中。
这是他使用的代码:
Ext.define('KitchenSink.view.layout.Center', {
extend: 'Ext.container.Container',
requires: [
'Ext.layout.container.Center'
],
xtype: 'layout-center',
width: 500,
height: 400,
layout: 'center',
items: {
title: 'Centered Panel: 75% of container width and 95% height',
border: true,
layout: 'center',
scrollable: true,
width: '75%',
height: '95%',
bodyPadding: '20 0',
items: [
{
title: 'Inner Centered Panel',
html: 'Fixed 300px wide and full height. The container panel will also autoscroll if narrower than 300px.',
width: 300,
height: '100%',
frame: true,
bodyPadding: '10 20'
}
]
}
});
这是它的样子:
我喜欢这个的原因是第一个内面板的宽度和高度完全基于百分比。如果我尝试使用 hbox 或 vbox,我需要将宽度或高度设置为固定数字。
我正在使用 Sencha Architect,但出于某种原因,我找不到面板、容器和视口元素的布局类型中心。我还在我的 requires
中包含了 Ext.layout.container.Center
但仍然没有骰子。
有人知道如何在 Sencha Architect 中实现这个 Kitchen Sink 示例吗?
这是一个错误https://www.sencha.com/forum/showthread.php?293050
但是您可以使用 SA 中的进程配置功能轻松克服任何此类问题。 Select 您的 class 您想要编辑特殊配置的位置并单击添加 processCofnig
接下来在生成的函数中,您可以根据需要以任何方式编辑配置。
processMyContainer: function(config) {
config.layout = "center";
}
使用进程配置的唯一缺点是您不会在 SA 设计视图中看到它设置的设置 - 但当您预览应用程序时,您会看到它。
这是我对 class 的最终代码:
Ext.define('MyApp.view.MyContainer', {
extend: 'Ext.container.Container',
alias: 'widget.mycontainer',
requires: [
'MyApp.view.MyContainerViewModel',
'Ext.panel.Panel'
],
viewModel: {
type: 'mycontainer'
},
height: 800,
width: 600,
initConfig: function(instanceConfig) {
var me = this,
config = {
items: [
me.processMainPAnel({
xtype: 'panel',
height: '95%',
width: '75%',
bodyPadding: '20 0',
title: 'Centered Panel: 75% of container width and 95% height',
items: [
{
xtype: 'panel',
height: '100%',
html: 'Fixed 300px wide and full height. The container panel will also autoscroll if narrower than 300px.',
width: 300,
bodyPadding: '10 20',
title: 'Inner Centered Panel'
}
]
})
]
};
me.processMyContainer(config);
if (instanceConfig) {
me.getConfigurator().merge(me, config, instanceConfig);
}
return me.callParent([config]);
},
processMainPAnel: function(config) {
config.layout = "center";
return config;
},
processMyContainer: function(config) {
config.layout = "center";
}
});
这是浏览器中的结果: