`

各种布局

 
阅读更多

Fit布局

在Fit布局中,子元素将自动填满整个父容器。注意:在fit布局下,对其子元素设置宽度是无效的。如果在fit布局中放置了多个组件,则只会显示第一个子元素。典型的案例就是当客户要求一个window或panel中放置一个GRID组件,grid组件的大小会随着父容器的大小改变而改变。

示例代码:

var myData = [ 
        ['3m Co',                               71.72, 0.02,  0.03,  '9/1 12:00am'], 
        ['Alcoa Inc',                           29.01, 0.42,  1.47,  '9/1 12:00am'], 
        ['Altria Group Inc',                    83.81, 0.28,  0.34,  '9/1 12:00am'], 
        ['American Express Company',            52.55, 0.01,  0.02,  '9/1 12:00am'], 
        ['American International Group, Inc.',  64.13, 0.31,  0.49,  '9/1 12:00am'], 
        ['AT&T Inc.',                           31.61, -0.48, -1.54, '9/1 12:00am'], 
        ['Boeing Co.',                          75.43, 0.53,  0.71,  '9/1 12:00am'], 
        ['Caterpillar Inc.',                    67.27, 0.92,  1.39,  '9/1 12:00am'], 
        ['Citigroup, Inc.',                     49.37, 0.02,  0.04,  '9/1 12:00am'], 
        ['E.I. du Pont de Nemours and Company', 40.48, 0.51,  1.28,  '9/1 12:00am'], 
        ['Exxon Mobil Corp',                    68.1,  -0.43, -0.64, '9/1 12:00am'], 
        ['General Electric Company',            34.14, -0.08, -0.23, '9/1 12:00am'], 
        ['General Motors Corporation',          30.27, 1.09,  3.74,  '9/1 12:00am'], 
        ['Hewlett-Packard Co.',                 36.53, -0.03, -0.08, '9/1 12:00am'], 
        ['Honeywell Intl Inc',                  38.77, 0.05,  0.13,  '9/1 12:00am'], 
        ['Intel Corporation',                   19.88, 0.31,  1.58,  '9/1 12:00am'], 
        ['International Business Machines',     81.41, 0.44,  0.54,  '9/1 12:00am'], 
        ['Johnson & Johnson',                   64.72, 0.06,  0.09,  '9/1 12:00am'], 
        ['JP Morgan & Chase & Co',              45.73, 0.07,  0.15,  '9/1 12:00am'], 
        ['McDonald\'s Corporation',             36.76, 0.86,  2.40,  '9/1 12:00am'], 
        ['Merck & Co., Inc.',                   40.96, 0.41,  1.01,  '9/1 12:00am'], 
        ['Microsoft Corporation',               25.84, 0.14,  0.54,  '9/1 12:00am'], 
        ['Pfizer Inc',                          27.96, 0.4,   1.45,  '9/1 12:00am'], 
        ['The Coca-Cola Company',               45.07, 0.26,  0.58,  '9/1 12:00am'], 
        ['The Home Depot, Inc.',                34.64, 0.35,  1.02,  '9/1 12:00am'], 
        ['The Procter & Gamble Company',        61.91, 0.01,  0.02,  '9/1 12:00am'], 
        ['United Technologies Corporation',     63.26, 0.55,  0.88,  '9/1 12:00am'], 
        ['Verizon Communications',              35.57, 0.39,  1.11,  '9/1 12:00am'], 
        ['Wal-Mart Stores, Inc.',               45.45, 0.73,  1.63,  '9/1 12:00am'] 
    ]; 
var store = Ext.create('Ext.data.ArrayStore', { 
    fields: [ 
       {name: 'company'}, 
       {name: 'price',      type: 'float'}, 
       {name: 'change',     type: 'float'}, 
       {name: 'pctChange',  type: 'float'}, 
       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'} 
    ], 
    data: myData 
}); 

Ext.define('DataWindow',{ 
    extend : 'Ext.window.Window', 
    title : 'MHZG.NET---Fit布局示例代码', 
    width:550, 
    layout : 'fit', 
    items : { 
        xtype : 'gridpanel', 
        store: store, 
        columns: [ 
           { 
               text     : 'Company', 
               flex     : 1, 
               sortable : false, 
               dataIndex: 'company' 
           }, 
           { 
               text     : 'Price', 
               width    : 75, 
               sortable : true, 
               renderer : 'usMoney', 
               dataIndex: 'price' 
           }, 
           { 
               text     : 'Change', 
               width    : 75, 
               sortable : true, 
               dataIndex: 'change' 
           }, 
           { 
               text     : '% Change', 
               width    : 75, 
               sortable : true, 
               
               dataIndex: 'pctChange' 
           }, 
           { 
               text     : 'Last Updated', 
               width    : 85, 
               sortable : true, 
               renderer : Ext.util.Format.dateRenderer('m/d/Y'), 
               dataIndex: 'lastChange' 
           }] 
    } 
}); 

Ext.onReady(function(){ 
    var win = Ext.create("DataWindow",{ 
        x:10, 
        y:20, 
    }); 
}); 

 

 

 

 border布局

border布局:border布局也称边界布局,他将页面分隔为west,east,south,north,center这五个部分,我们需要在在其items中指定使用region参数为其子元素指定具体位置。

注意:north和south部分只能设置高度(height),west和east部分只能设置宽度(width)。north south west east区域变大,center区域就变小了。

参数 split:true 可以调整除了center四个区域的大小。

参数 collapsible:true 将激活折叠功能, title必须设置,因为折叠按钮是出现标题部分的。

center 区域是必须使用的,而且center 区域不允许折叠。Center区域会自动填充其他区域的剩余空间。尤其在Extjs4.0中,当指定布局为border时,没有指定center区域时,会出现报错信息。

示例代码:

Ext.create('Ext.panel.Panel', { 
        width: 500, 
        height: 400, 
        title: 'MHZG.NET-Border Layout', 
        layout: 'border', 
        x:20, 
        y:20, 
        items: [{ 
            title: 'South Region is resizable', 
            region: 'south', 
            xtype: 'panel', 
            height: 80, 
            split: true, 
            margins: '0 5 5 5' 
        },{ 
            title: 'West Region is collapsible', 
            region:'west', 
            xtype: 'panel', 
            margins: '5 0 0 5', 
            width: 200, 
            collapsible: true, 
            id: 'west-region-container', 
            layout: 'fit' 
        },{ 
            title: 'Center Region', 
            region: 'center', 
            xtype: 'panel', 
            layout: 'fit', 
            margins: '5 5 0 0', 
            html:'在Extjs4中,center区域必须指定,否则会报错。' 
        }], 
        renderTo: Ext.getBody() 
    }); 

 

 

accordion布局

accordion布局:accordion布局也称手风琴布局,在accordion布局下,在任何时间里,只有一个面板处于激活状态。其中每个面边都支持展开和折叠。注意:只有Ext.Panels 和所有Ext.panel.Panel 子项,才可以使用accordion布局。

示例代码:

Ext.create('Ext.panel.Panel', { 
        title: 'Accordion Layout',     
        width: 300,      
        height: 300, 
        x:20, 
        y:20, 
        layout:'accordion',     
        defaults: { 
            bodyStyle: 'padding:15px' 
        }, 
        layoutConfig: {        
            titleCollapse: false,         
            animate: true,         
            activeOnTop: true      
        },     
        items: [{         
            title: 'Panel 1',         
            html: 'Panel content!'      
        },{         
            title: 'Panel 2',         
            html: 'Panel content!'     
        },{ 
            title: 'Panel 3',         
            html: 'Panel content!'     
        }],      
        renderTo: Ext.getBody() 
    }); 

 

Card布局

Card布局:这种布局用来管理多个子组件,并且在任何时刻只能显示一个子组件。这种布局最常用的情况是向导模式,也就是我们所说的分布提交。Card布局可以使用layout:'card'来创建。注意:由于此布局本身不提供分步导航功能,所以需要用户自己开发该功能。由于只有一个面板处于显示状态,那么在初始时,我们可以使用setActiveItem功能来指定某一个面板的显示。当要显示下一个面板或者上一个面板的时候,我们可以使用getNext()或getPrev()来得到下一个或上一个面板。然后使用setDisabled方法来设置面板的显示。另外,如果面板中显示的是FORM布局,我们在点击下一个面板的时候,处理FORM中提交的元素,通过AJAX将表单中的内容保存到数据库中或者SESSION中。

下面的示例代码展示了一个基本的Card布局,布局中并没有包含form元素,具体情况,还要根据实际情况进行处理:

var navigate = function(panel, direction){      
        var layout = panel.getLayout();     
        layout[direction]();      
        Ext.getCmp('move-prev').setDisabled(!layout.getPrev());      
        Ext.getCmp('move-next').setDisabled(!layout.getNext()); 
    };  
    Ext.create('Ext.panel.Panel', {     
        title: 'MHZG.NET-Card布局示例',     
        width: 300,      
        height: 202,     
        layout: 'card',      
        activeItem: 0, 
        x:30, 
        y:60, 
        bodyStyle: 'padding:15px',     
        defaults: {border: false}, 
        bbar: [{             
            id: 'move-prev',             
            text: 'Back',              
            handler: function(btn) { 
                navigate(btn.up("panel"), "prev");             
            }, 
            disabled: true 
        }, 
        '->', 
        { 
            id: 'move-next',             
            text: 'Next',              
            handler: function(btn) { 
                navigate(btn.up("panel"), "next"); 
            } 
        }], 
        items: [{ 
            id: 'card-0', 
            html: '<h1>Welcome to the Wizard!</h1><p>Step 1 of 3</p>'      
        }, 
        { 
            id: 'card-1', 
            html: '<p>Step 2 of 3</p>' 
        }, 
        { 
            id: 'card-2', 
            html: '<h1>Congratulations!</h1><p>Step 3 of 3 - Complete</p>'      
        }],     
        renderTo: Ext.getBody() 
    }); 

 

anchor布局

anchor布局将使组件固定于父容器的某一个位置,使用anchor布局的子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会根据规定的规则重新渲染位置和大小。

AnchorLayout布局没有任何的直接配置选项(继承的除外),然而在使用AnchorLayout布局时,其子组件都有一个anchor属性,用来配置此子组件在父容器中所处的位置。

anchor属性为一组字符串,可以使用百分比或者是-数字来表示。配置字符串使用空格隔开,例如

anchor:'75% 25%',表示宽度为父容器的75%,高度为父容器的25%

anchor:'-300 -200',表示组件相对于父容器右边距为300,相对于父容器的底部位200

anchor:'-250 20%',混合模式,表示组件党对于如容器右边为250,高度为父容器的20%

示例代码

Ext.create('Ext.Panel', {     
        width: 500,     
        height: 400,      
        title: "MHZG.NET-AnchorLayout Panel",     
        layout: 'anchor', 
        x:60, 
        y:80, 
        renderTo: Ext.getBody(),     
        items: [{         
            xtype: 'panel',          
            title: '75% Width and 25% Height',         
            anchor: '75% 25%'     
        },{          
            xtype: 'panel',         
            title: 'Offset -300 Width & -200 Height',          
            anchor: '-300 -200'          
        },{         
            xtype: 'panel',          
            title: 'Mixed Offset and Percent',         
            anchor: '-250 30%'     
        }] 
    }); 

 

 

分享到:
评论

相关推荐

    各种布局大集合

    标题"各种布局大集合"暗示了这是一个包含多种Android布局示例的资源包,可能是为了教学或快速参考使用。描述中的"有fragment,popupWindow等各种布局风格"揭示了这个压缩包不仅包含基本的布局,还涵盖了更复杂的组件...

    适用于各种布局的下拉刷新

    这个“适用于各种布局的下拉刷新”Demo旨在提供一个通用的解决方案,以适应不同类型的布局,如列表、网格或自定义视图。这个Demo的亮点在于其灵活性和兼容性,开发者可以根据自己的需求轻松集成到项目中。 1. **...

    Android 适用各种布局的loading 加载

    本示例着重探讨的是如何在Android应用中实现各种布局的"loading"加载效果,特别是在ListView等滚动视图中,采用类似iOS水滴形态的加载设计,提供更优雅的用户体验。 首先,我们来看`spots-dialog-master`这个项目,...

    div+css的各种布局参考

    本资料包“div+css的各种布局参考”提供了丰富的学习资源,帮助开发者掌握利用Div+CSS实现各种网页布局的方法。 1. **基础知识** - **Div元素**:Div是HTML中的一个通用容器,没有默认样式,通常通过CSS来设置宽高...

    RecyclerView.zip,各种布局的实现

    总的来说,“RecyclerView.zip”包含的资源和示例代码将帮助你深入理解RecyclerView的各种布局实现,以及如何通过适配器定制列表展示。通过学习和实践,你将能够更熟练地在Android应用中运用RecyclerView,为用户...

    demo - 包含 compose 各种布局实现

    demo - 包含 compose 各种布局实现; 参考学习资料;

    18个ios项目源代码 各种布局控件使用及扩展视图自定义UITableViewCell

    18个ios项目源代码各种布局控件使用及扩展视图自定义UITableViewCell。 实现各种样式的表格输入界面、自定义TabBar的文字、颜色和图片加箭头、列表个性化列表项、IOS欢迎界面等。 18个ios项目源代码各种布局控件使用...

    Layout的各种布局

    java新手可能会为各种组件的布局头疼,我就找了一篇相关的文章跟大家分享一下,希望对某些人有一定的帮助。

    40种网页布局源代码

    这个压缩包里的`.gif`文件可能展示了各种布局在不同状态下的视觉效果,通过对比和分析,学习者可以直观地理解不同布局的差异和应用场景。 总之,"40种网页布局源代码"为学习和实践CSS布局提供了丰富的实例,通过...

    bootstrap各种布局模板(html文件)

    Bootstrap是世界上最流行的前端开发框架之一,它为开发者提供了丰富的组件、样式和布局系统,使得创建响应式、移动优先的网站变得简单高效。本压缩包文件包含了一系列基于Bootstrap的布局模板,这些模板以HTML文件的...

    布局之美~~40个CSS布局源码

    这些案例中,例如LayoutGala33.html、LayoutGala34.html等,可能涵盖了以上提到的各种布局方式,通过查看和分析源代码,我们可以学习到如何设置盒模型属性(如margin、padding、width和height)、如何使用display...

    unigui入门教程3(布局的使用)

    通过理解和应用各种布局,开发者可以轻松地创建响应式UI,使应用程序在桌面和移动平台上都能呈现出一致的用户体验。 1. **基本布局类型**:Unigui提供了多种布局类型,如网格布局(GridLayout)、流式布局...

    android 中页面布局使用demo

    这个“android 中页面布局使用demo”应该是为了帮助开发者深入理解并实践Android中的各种布局管理器。下面我们将详细探讨Android布局及其在实际应用中的使用。 Android支持多种布局管理器,每种都有其特定的用途: ...

    css网站布局实录-2

    3. **布局技术**:书中的重点在于各种布局技术,如流体布局、网格布局、响应式布局等。流体布局使页面能适应不同屏幕尺寸,网格布局则提供了一种更灵活的多列布局方式,而响应式布局则解决了多设备适配的问题,确保...

    Qt代码布局原理

    这个名为“LayoutPractice”的文件很可能是Qt项目的一个示例,包含了各种布局的实践应用。通过打开和分析这个项目,你可以更直观地了解布局在实际编程中的应用和效果。 总结起来,理解并熟练掌握Qt的代码布局原理...

    安卓布局方法

    在Android应用开发中,布局(Layout)是构建用户界面的核心组成部分。不同的布局方式适用于不同的界面设计需求,让我们逐一深入理解这些常见...为了达到最佳效果,开发者应熟悉各种布局的特点,并熟练运用它们的优势。

    QT 初学 窗口整体布局规划

    总之,QT的布局系统是其强大之处之一,通过熟练掌握各种布局方式,开发者可以构建出高效、美观的用户界面,提升软件的整体品质。在实际操作中,不断尝试、调试和优化,将是提升QT布局技能的关键。

    安卓布局实例

    本教程“安卓布局实例”旨在帮助初学者理解和掌握如何创建和管理安卓应用中的各种布局。通过实例化的讲解,我们可以深入理解每个布局类型的特点及其在实际应用中的用法。 一、线性布局(LinearLayout) 线性布局是...

    java布局管理器实例

    理解各种布局管理器的工作原理,并结合使用,可以设计出更动态且适应性强的界面。 总之,Java的布局管理器是GUI开发的核心工具,熟练掌握它们可以帮助开发者创建出适应性强、视觉效果优秀的应用程序。通过实例学习...

    40个css布局模板

    通过学习和应用这40个CSS布局模板,开发者不仅可以提升设计效率,还能深入理解各种布局模式的原理和应用场景。同时,这些模板也可以作为参考,帮助解决实际项目中的布局问题,为创建高质量的网页提供有力支持。在...

Global site tag (gtag.js) - Google Analytics