【技能】Ext.Viewport 实现左三右一排列方式。

1、Extjs 布局非常是灵活。可是吐槽下CSS,太难重写,想自己重构一套都难哎... 

 var viewport = new Ext.Viewport({
                 layout:'border',
                 items:[
               
                 {
                 //中间部分
                 region:'center', 
                     id: 'centerPanel', 
                     iconCls:'',
                     title:'${centerTitle}',
                     autoScroll:false,
                     header:false,
                     layout: 'fit',
                     items:[mainTabs]},
                     {    
                     //布局左边west部分
		                region : 'west',                
		                220,  
		                collapsible: true,
		                split:true,
		                header:false,
		                border:false,
		                frame:false,
		                xtype:'panel',
		                layout:'anchor',
		                collapseMode:'mini',
		                layoutConfig:{columns:1},
		                items:[{
		                    split:true,
		                    region:'west',
		                    header:false,
		                    autoScroll:false,
		                    border:false,
		                    anchor:'100% 10%',                    
		                    xtype: 'panel',
		                    html:'<table border="0" cellpadding="0" cellspacing="0" width="100%"  	height="60" background="./resource/image/banner_background/${theme}.png">	<tr >		<td style="padding-left:15px;padding-top:10px"><img class="IEPNG" src="${banner}" />		</td>	</tr></table>',
		                    collapsible: true                                 
		                },{region:'west',
		                     220,
		                    anchor:'100% 84%',
		                    collapsible: true,
		                    minSize: 200,
		                    border:false,
		                    maxSize: 350,
		                    split: true,
		                    collapseMode:'mini',
							iconCls:'book_previousIcon',
		                    title: '${westTitle}',
		                    layout:'accordion',
		                    layoutConfig:{
		                      animate:true,
							  activeOnTop : ${activeOnTop}
							},
		                   items: [
								#foreach($card in $cardList)
									                {
								                    autoScroll:true,
								                    border:false,
								                    contentEl: 'div.card.${card.menuid}',
								#if(${card.iconcls}&&${card.iconcls}!="")
								                    iconCls:'${card.iconcls}',
								#end
													title:'${card.menuname}'
								                   }
								#if(${card.isNotLast})
													  ,
								#end
								#end
						   ]
		                   },{
		                    split:true,
		                    region:'west',
		                    collapsible: true,
		                    header:false,
		                    autoScroll:false,
		                    //border:false,
		                    anchor:'100% 6%', 
		                    region:'center',
							layout: {
						        type:'hbox',
						        padding:'3 3 3 3',
						        pack:'start',
						        align:'top'
						    },
						    defaults:{margins:'0 5 0 0'},
		                    xtype: 'panel',
		                    items:[configButton,closeButton]
		                }]            
		            }
                ]}); 

说明

1.Viewport一个panel 来固定region:'center', 也就是center部分

2.再使用一个panel,使用layout:'anchor',布局方式,anchor布局将使组件固定于父容器的某一个位置,使用anchor布局的子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会依据规定的规则又一次渲染位置和大小。

3.新增第二部的panel。加入3个子panel布局。而且配置它们的anchor。来填充父容器,保证改变3个中得一个,其它2个能自己主动填充空间,进行自己主动适应。

4.这里提示一点:因为是使用4个panel 组装成的区域,能够使用collapseMode:'mini',来控制关闭右側的面板。

实现效果:




原文地址:https://www.cnblogs.com/zhchoutai/p/7070583.html