Ext 布局(layout)
1、card
1 var navigate = function (panel, direction) {
2 var layout = panel.getLayout();
3 layout[direction]();
4 Ext.getCmp('move-prev').setDisabled(!layout.getPrev());
5 Ext.getCmp('move-next').setDisabled(!layout.getNext());
6 };
7
8 Ext.create('Ext.panel.Panel', {
9 title: 'Example Wizard',
10 width: 300,
11 height: 200,
12 layout: 'card',
13 bodyStyle: 'padding:15px',
14 defaults: {
15 border: false
16 },
17 bbar: [
18 {
19 id: 'move-prev',
20 text: 'Back',
21 handler: function (btn) {
22 navigate(btn.up("panel"), "prev");
23 },
24 disabled: true
25 },
26 '->',
27 {
28 id: 'move-next',
29 text: 'Next',
30 handler: function (btn) {
31 navigate(btn.up("panel"), "next");
32 }
33 }
34 ],
35 items: [{
36 id: 'card-0',
37 html: '<h1>Welcome to the Wizard!</h1><p>Step 1 of 3</p>'
38 }, {
39 id: 'card-1',
40 html: '<p>Step 2 of 3</p>'
41 }, {
42 id: 'card-2',
43 html: '<h1>Congratulations!</h1><p>Step 3 of 3 - Complete</p>'
44 }],
45 renderTo: Ext.getBody()
46 });
效果图
2、vbox
1 Ext.create('Ext.Panel', {
2 width: 500,
3 height: 400,
4 title: "VBoxLayout Panel",
5 layout: {
6 type: 'vbox',
7 align: 'center'
8 },
9 renderTo: document.body,
10 items: [{
11 xtype: 'panel',
12 title: 'Inner Panel One',
13 width: 250,
14 flex: 2
15 },
16 {
17 xtype: 'panel',
18 title: 'Inner Panel Two',
19 width: 250,
20 flex: 7
21 },
22 {
23 xtype: 'panel',
24 title: 'Inner Panel Three',
25 width: '100%',
26 flex: 1
27 }]
28 });
效果图
3、table
1 Ext.create('Ext.panel.Panel', {
2 title : 'Table Layout',
3 width : 300,
4 height : 150,
5 layout : {
6 type : 'table',
7 columns : 3
8 },
9 defaults : {
10 bodyStyle : 'padding:20px'
11 },
12 items : [{
13 html : 'Cell A content',
14 rowspan : 2
15 }, {
16 html : 'Cell B content',
17 colspan : 2
18 }, {
19 html : 'Cell C content',
20 cellCls : 'highlight'
21 }, {
22 html : 'Cell D content'
23 }
24 ],
25 renderTo : Ext.getBody()
26 });
效果图
4、hbox
1 Ext.create('Ext.Panel', {
2 width : 500,
3 height : 300,
4 title : "HBoxLayout Panel",
5 layout : {
6 type : 'hbox',
7 align : 'stretch'
8 },
9 renderTo : document.body,
10 items : [{
11 xtype : 'panel',
12 title : 'Inner Panel One',
13 flex : 2
14 }, {
15 xtype : 'panel',
16 title : 'Inner Panel Two',
17 flex : 1
18 }, {
19 xtype : 'panel',
20 title : 'Inner Panel Three',
21 flex : 1
22 }
23 ]
24 });
效果图
5、fit
1 Ext.create('Ext.panel.Panel', {
2 title : 'Fit Layout',
3 width : 300,
4 height : 150,
5 layout : 'fit',
6 items : {
7 title : 'Inner Panel',
8 html : 'This is the inner panel content',
9 bodyPadding : 20,
10 border : false
11 },
12 renderTo : Ext.getBody()
13 });
效果图
6、column
1 Ext.create('Ext.panel.Panel', {
2 title : 'Column Layout - Percentage Only',
3 width : 350,
4 height : 250,
5 layout : 'column',
6 items : [{
7 title : 'Column 1',
8 columnWidth : .25
9 }, {
10 title : 'Column 2',
11 columnWidth : .55
12 }, {
13 title : 'Column 3',
14 columnWidth : .20
15 }
16 ],
17 renderTo : Ext.getBody()
18 });
19
20 Ext.create('Ext.Panel', {
21 title : 'Column Layout - Mixed',
22 width : 350,
23 height : 250,
24 layout : 'column',
25 items : [{
26 title : 'Column 1',
27 width : 120
28 }, {
29 title : 'Column 2',
30 columnWidth : .7
31 }, {
32 title : 'Column 3',
33 columnWidth : .3
34 }
35 ],
36 renderTo : Ext.getBody()
37 });
效果图
7、anchor
1 Ext.create('Ext.Panel', {
2 width : 500,
3 height : 400,
4 title : "AnchorLayout Panel",
5 layout : 'anchor',
6 renderTo : Ext.getBody(),
7 items : [{
8 xtype : 'panel',
9 title : '75% Width and 20% Height',
10 anchor : '75% 20%'
11 }, {
12 xtype : 'panel',
13 title : 'Offset -300 Width & -200 Height',
14 anchor : '-300 -200'
15 }, {
16 xtype : 'panel',
17 title : 'Mixed Offset and Percent',
18 anchor : '-250 20%'
19 }
20 ]
21 });
效果图
8、accordion
1 Ext.create('Ext.panel.Panel', {
2 title : 'Accordion Layout',
3 width : 300,
4 height : 300,
5 layout : 'accordion',
6 defaults : {
7 bodyStyle : 'padding:15px'
8 },
9 layoutConfig : {
10 titleCollapse : false,
11 animate : true,
12 activeOnTop : true
13 },
14 items : [{
15 title : 'Panel 1',
16 html : 'Panel content!'
17 }, {
18 title : 'Panel 2',
19 html : 'Panel content!'
20 }, {
21 title : 'Panel 3',
22 html : 'Panel content!'
23 }
24 ],
25 renderTo : Ext.getBody()
26 });
效果图
9、auto
1 Ext.create('Ext.Panel', {
2 width : 500,
3 height : 280,
4 title : "AutoLayout Panel",
5 layout : 'auto',
6 renderTo : document.body,
7 items : [{
8 xtype : 'panel',
9 title : 'Top Inner Panel',
10 width : '75%',
11 height : 90
12 }, {
13 xtype : 'panel',
14 title : 'Bottom Inner Panel',
15 width : '75%',
16 height : 90
17 }
18 ]
19 });
效果图
10、border
1 Ext.create('Ext.container.Viewport', {
2 layout : 'border',
3 defaults : {
4 style : {
5 borderStyle : 'solid',
6 borderWidth : '0px'
7 }
8 },
9 items : [{
10 region : 'north',
11 html : 'Page Title',
12 title : 'north'
13 }, {
14 region : 'west',
15 collapsible : true,
16 title : 'Navigation',
17 width : 150
18 }, {
19 split : true,
20 region : 'south',
21 title : 'South Panel',
22 collapsible : true,
23 html : 'Information goes here',
24 height : 100,
25 minHeight : 100
26 }, {
27 split : true,
28 region : 'east',
29 title : 'East Panel',
30 collapsible : true,
31 width : 150
32 }, {
33 region : 'center',
34 xtype : 'tabpanel',
35 activeTab : 0,
36 items : {
37 title : 'Default Tab',
38 html : 'The first tab\'s content. Others may be added dynamically'
39 }
40 }
41 ]
42 });
效果图