【问题标题】:ExtJs5.1 - Nested Panels: resize inner panels to outer panelExtJs 5.1 - 嵌套面板:将内面板调整为外面板
【发布时间】:2015-05-20 14:04:12
【问题描述】:

问题描述

我得到了一些 ExtJs5.1 代码,其中有几个嵌套组件,例如 Ext.form.field.TextAreaExt.tab.Panel Ext.Button

您可以复制&粘贴以下代码,将我的问题重现到 index.html 文件中并进行试验(假设您有一个本地网络服务器正在运行并复制了 ExtJs5 .1 文件到网络服务器的 htdocs 文件夹中,例如 Xampp):

<!DOCTYPE html>
<html>
<head>      
    <script type="text/javascript" src="/ext-5.1.1/build/ext-all-debug.js"></script>

    <link id="theme1" rel="stylesheet" type="text/css" href="/ext-5.1.1/build/packages/ext-theme-neptune/build/resources/ext-theme-neptune-all.css">
    <script type="text/javascript" src="/ext-5.1.1/build/packages/ext-theme-neptune/build/ext-theme-neptune.js"></script>

    
    
    <script type ="text/javascript">
    Ext.onReady( function(){
    
            var textfield = 
                Ext.create('Ext.form.field.TextArea', {
                                title: 'textfield',
                                autoscroll: true});
            
            var textfield_2 = 
                Ext.create('Ext.form.field.TextArea', {
                                title: 'textfield_2',
                                autoscroll: true});
                                
            var tab_panel = 
                Ext.create('Ext.tab.Panel', {
                                title: 'tab_panel',
                                columnWidth: 0.5,
                                padding: '10 10 10 10',
                                items:[textfield, textfield_2]  
                            });
            
            var right_panel = 
                Ext.create('Ext.panel.Panel', {
                                title: 'right_panel',
                                columnWidth: 0.5,
                                html: 'blablabalablablaba3',
                                padding: '10 10 10 10'
                            });
            
            var lower_vbox_panel = Ext.create('Ext.panel.Panel', {
                title: 'lower_vbox_panel',
                frame: true,
                autoscroll: true,
                layout: {type: 'column'},           
                margin: '10 10 10 10',
                items: [tab_panel,right_panel]
            });
            
            var button_1 = Ext.create('Ext.Button', {
                text: 'button_1',
                padding: '15 15 15 15',
                margin: '10 10 10 10',
                handler: function() {
                    console.log('button_1 click!');
                }
            });
            
            var button_2 = Ext.create('Ext.Button', {
                text: 'button_2',
                padding: '15 15 15 15',
                margin: '10 10 10 10',
                handler: function() {
                    console.log('button_2 click!');
                }
            });
            
            var upper_vbox_panel = Ext.create('Ext.panel.Panel', {
                title: 'upper_vbox_panel',
                margin: '10 10 10 10',
                frame: true,
                items: [button_1, button_2]
            });
            
            var vbox_panel = Ext.create('Ext.panel.Panel', {
                frame: true,
                title: 'vbox_panel',
                renderTo: Ext.getBody(),
                autoscroll: true,
                margin: '15 15 15 15',
                layout: {type: 'vbox', align: 'stretch'},
                items: [upper_vbox_panel,lower_vbox_panel]
            });

            textfield.setValue("blablablablabla");
            textfield_2.setValue("blablablablabla2");
        
    });
    </script>
</head>
<body></body>

调整浏览器窗口大小后,名为 vbox_panel 的外部面板会自动调整大小以适应浏览器窗口的宽度和高度。

很遗憾,名为 upper_vbox_panellower_vbox_panel 的两个嵌套面板及其嵌套组件不会相对于名为 vbox_panel 的外部面板调整大小.

问题:

如何相对于名为 vbox_panel 的外部面板调整两个嵌套面板的大小?

编辑:

我发现类 Ext.container.Viewport 用于将容器适应浏览器窗口,因此必须将名为 vbox_panel 的外部面板添加到其中:

var vp = new Ext.Viewport({
    layout : 'fit',
    items : [vbox_panel] ,
    renderTo : Ext.getBody()
});

现在每个嵌套组件的宽度在调整浏览器窗口大小后都会发生变化,但它们的高度没有变化。

我已经在互联网上搜索了一半的解决方案,包括:layout: 'anchor', align:'stretch' 等。pp.. 但它们都不起作用。

编辑后的新问题:

如何将浏览器窗口高度的变化合并到嵌套组件中?

【问题讨论】:

    标签: javascript extjs layout resize


    【解决方案1】:

    使用layout:'fit' 将基础容器与其父容器相匹配,在此fiddle 中,您可以看到布局配置在起作用。

    请阅读documentation 以获得更好的理解,简而言之,父布局负责所有子布局的定位和大小。

    【讨论】:

    • 但是当我将布局设置为“适合”时,我不能再在基本容器中使用布局“列”了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 2012-01-08
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多