Extjs4布局layout

1)Ext.layout.container.Border 
    layout : 'border'表示我们使用了Border布局,这种布局方式称为边界布局,它将页面分隔成为:west,east,south,north,center这五个部分,我们在items里面使用region参数为它组织定义具体的位置。
    north和south部分只能设置高度(height),west和east部分只能设置宽度(width)。northsouth west east区域变大了,center区域就变小了。
    参数 split:true 可以拖动除了center四个区域的大小。
    参数 collapsible:true激活折叠功能,前面title必须设置,因为折叠按钮是出现标题部分
注意:center区域是必须使用的,而且center 区域不允许折叠。
Ext.create('Ext.panel.Panel',{
             width:500,
            height: 400,
             layout:   'border',
            items: [{
                title:   'South Region isresizable' ,
                region:   'south' ,       //position for region
                xtype:   'panel' ,
                height: 100,
                split:   true ,           //enable resizing
                margins:   '0 5 5 5'
            },{
                   //xtype: 'panel' implied by default
                title:   'West Region iscollapsible' ,
                region: 'west' ,
                xtype:   'panel' ,
                margins:   '5 0 0 5' ,
                width: 200,
                collapsible:   true ,     //make collapsible
                id:   'west-region-container' ,
                layout:   'fit'
            },{
                title:   'Center Region' ,
                region:   'east' ,       //center region is required, no width/heightspecified
                xtype:   'panel' ,
                layout:   'fit' ,
                margins:   '5 5 0 0'
            }],
            renderTo: Ext.getBody()
        });

2)Ext.layout.container.Fit
      layout:'fit'表示我们引用了fit布局。当客户要求一个窗口里显示一个Grid表格,可以让它自动适应窗体的大小的变化,窗体变大时候Grid表格也变大,窗体变小的时候也变小。
注意:layout :'fit'组件的items只能放一个组件,如果放了多个组件,那么也只有一个子组件会起作用。
Ext.define( 'ParentWindow' ,{
                extend:   'Ext.window.Window' ,
                title:   'ParentWindow' ,
                width:   '300px' ,
                height:   '200px' ,
                layout:   'fit',
                items: {
                     xtype:   'gridpanel' ,
                     store:store,
                  stateful:   true ,
                  layout :   'fit' ,
                  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'
                      }]
                }
           });


3)Ext.layout.container.Accordion
      layout: ' accordion'代表使用了accordion布局方式。
var   accrodion= Ext.create( 'Ext.panel.Panel' ,{
              
               layout: 'accordion',
              defaults: {
                  bodyStyle:   'padding:15px'
              },
              layoutConfig: {
                  titleCollapse:   true ,
                  animate:   true ,
                  activeOnTop:   false
              },
              items: [{
                  title:   'Panel 1' ,
                  html:   'Panel content!'
              },{
                  title:   'Panel 2' ,
                  html:   'Panel content!'
              },{
                  title:   'Panel 3' ,
                  html:   'Panel content!'
              }],
              

           });


4)Ext.layout.container.Card
    layout : 'card'Card布局可以看做是一叠卡片,从上面看起来就像是一张卡片,我们可以把中间的卡片抽出来,放到最上面,可是每次只能显示一张卡片。
<</span>script type="text/javascript">
      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());
     }
      var   cardPanel= Ext.create( 'Ext.panel.Panel' ,{
         layout:   'card',
        activeItem:0,   // make sure the active item is set on thecontainer config!
        bodyStyle:   'padding:15px' ,
        defaults: {
               //applied to each contained panel
            border:   false
        },
           bbar: [{
                     id: 'move-prev' ,
                     text:   '上一章' ,
                     xtype:   'button' ,
                     listeners :{
                          'click'   :   function (btn){
                   navigate(btn.up( 'panel' ), 'prev' );
                         }
                           }
                     
                  },{
                     id: 'move-next' ,
                     text:   '下一章' ,
                     xtype:   'button' ,
                     listeners :{
                          'click'   :   function (btn){
                   navigate(btn.up( 'panel' ), 'next' );
                         }
                           }
                  }],
           items: [
                   {
                      id:   'card0' ,
                      html:   '

Welcometo card0!

第一章:好好学习'
                   },{
                      id:   'card1' ,
                      html:   '

Welcometo card1!

第二章:天天向上'
                   },{
                      id:   'card2' ,
                      html:   '

Welcometo card2!

第三章:good good study'
                   },{
                      id:   'card3' ,
                      html:   '

Welcometo card3!

第四章:天天'
                   },{
                      id:   'card4' ,
                      html:   '

Welcometo card4!

第五章:顶顶顶'
                   }
                   ]
     });
     Ext.onReady( function (){
           Ext.create( 'Ext.window.Window' ,{
                title:   'CardLayoutWindow' ,
                width:   '300px' ,
                height:   '200px' ,
                layout:   'fit' ,
                items: cardPanel
           }).show();
     });
</</span>script>

5)Ext.layout.container.Anchor
   layout:'anchor'设置为anchor布局模式。在每一个panel中的items中有一个参数anchor,参数是一个字符串。
    anchor: '75%20%',中间用一个空格隔开,空格前后是%的数字。第一个参数75%:意思是宽度设置为整体的75%;第二个参数20%:是设置高度为整体的20%。
    anchor:'-300 -200',中间用一个空格隔开,空格前后是整数,第一个参数-300:表示距离右侧的相对距离;第二个参数-200:表示距离底部的相对距离。
     <</span>script type="text/javascript">
     Ext.onReady( function (){
           Ext.create( 'Ext.Panel' ,{
              width: 500,
              height: 400,
              title:   "AnchorLayout Panel" ,
               layout:   'anchor',
              renderTo: Ext.getBody(),
              items: [{
                  xtype:   'panel' ,
                  title:   '75%宽度 20%高度' ,
                  anchor:   '75% 20%'
              },{
                  xtype:   'panel' ,
                  title:   'Offset -300 Width & -200Height' ,
                  anchor:   '-300 -200'     
              },{
                  xtype:   'panel' ,
                  title:   'Mixed Offset andPercent' ,
                  anchor:   '-250 20%'
              }]
           });
     });
</</span>script>



6)Ext.layout.container.Absolute
      layout:'absolute'。我们可以对每一个控件的位置进行控制。
      x:设置x坐标;y:设置y坐标
     var   alayout= Ext.create( 'Ext.form.Panel' ,{
        width: 300,
        height: 275,
         layout: 'absolute',
       
        defaultType:   'textfield' ,
        items: [{
            x: 10,
            y: 10,
            xtype: 'label' ,
            text:   'Send To:'
        },{
            x: 80,
            y: 10,
            name:   'to' ,
            anchor: '90%'     //anchor width by percentage
        },{
            x: 10,
            y: 40,
            xtype: 'label' ,
            text:   'Subject:'
        },{
            x: 80,
            y: 40,
            name:   'subject' ,
            anchor:   '90%'     //anchor width by percentage
        },{
            x:0,
            y: 80,
            xtype:   'textareafield' ,
            name:   'msg' ,
            anchor:   '100% 100%'     //anchor width and height
        }]
        
     });


7)Ext.layout.container.Column
   layout:'column ':表格布局。
    注意items中  columnWidth的数值必须是0~1之间的小数,它表示每个子组件在整体中所占的百分比。它们的总和应该是1,否则会出现没有填满的情况。
     var   columnLayout= Ext.create( 'Ext.panel.Panel' ,{
        width: 350,
        height: 250,
         layout: 'column',
        items: [{
            title:   '表格Layout 1' ,
            columnWidth: .25
        },{
            title:   '表格Layout 2' ,
            columnWidth: .55
        },{
            title:   '表格Layout 3' ,
            columnWidth: .20
        }],
        renderTo: Ext.getBody()
    });


8)Ext.layout.container.Table
      layout : 'table'表格布局。table布局把页面定义成一个表格包括行和列。它在生成代码的时候就是生成了html代码中的标签。
          var   tableLayout= Ext.create( 'Ext.panel.Panel' ,{
                width:300,
            height: 150,
                layout: {
                     type: 'table',
                     columns: 3
                },
                defaults:{
                   //applied to each contained panel
                bodyStyle: 'padding:20px'
            },
                items:[{
                html:   'A table' ,
                rowspan: 2
            },{
                html:   'B table' ,
                colspan: 2
            },{
                html:   'C table' ,
                cellCls:   'highlight'
            },{
                html:   'D table'
            }]

           });

<<span>tbody>
<<span>tr >
<<span>td  id=""  class="x-table-layout-cell "  colspan="1"  rowspan="2" >
<<span>div  id="panel-1015"  class="x-panelx-panel-default"  role="presentation"  style="height:57px; width: 78px;" >
<<span>div  id="ext-gen1025"  class="x-panel-bodyx-panel-body-defaultx-panel-body-default"  style="padding:20px; left: 0px; top: 0px;" > Atable</<span>div>
</<span>div>
</<span>td>
<<span>td  id=""  class="x-table-layout-cell "  colspan="2"  rowspan="1" >
<<span>div  id="panel-1016"  class="x-panelx-panel-default"  role="presentation"  style="height:57px; width: 162px;" >
<<span>div  id="ext-gen1029"  class="x-panel-bodyx-panel-body-defaultx-panel-body-default"  style="padding:20px; left: 0px; top: 0px;" > Btable</<span>div>
</<span>div>
</<span>td>
</<span>tr>
<<span>tr >
<<span>td  id=""  class="x-table-layout-cellhighlight"  colspan="1"  rowspan="1" >
<<span>div  id="panel-1017"  class="x-panelx-panel-default"  role="presentation"  style="height:57px; width: 81px;" >
<<span>div  id="ext-gen1033"  class="x-panel-bodyx-panel-body-defaultx-panel-body-default"  style="padding:20px; left: 0px; top: 0px;" > Ctable</<span>div>
</<span>div>
</<span>td>
<<span>td  id=""  class="x-table-layout-cell "  colspan="1"  rowspan="1" >
<<span>div  id="panel-1018"  class="x-panelx-panel-default"  role="presentation"  style="height:57px; width: 81px;" >
<<span>div  id="ext-gen1037"  class="x-panel-bodyx-panel-body-defaultx-panel-body-default"  style="padding:20px; left: 0px; top: 0px;" > Dtable</<span>div>
</<span>div>
</<span>td>
</<span>tr>
</<span>tbody>
</<span>table>



9)Ext.layout.container.VBox 垂直布局

a)align:字符类型,指示组件在容器内的对齐方式。有如下几种属性。

   1、left(默认):排列于容器左侧。

   2、center :控件在容器水平居中。

   3、stretch:控件横向拉伸至容器大小

   4、stretchmax:控件横向拉伸,宽度为最宽控件的宽。

b)pack : 字符类型,指示组件在容器的位置,有如下几种属性。

   1、start(默认):组件在容器上边

   2、center:组件在容器中间

   3、end:组件在容器的下边

10)Ext.layout.container.HBox 水平布局

a)align:字符类型,指示组件在容器内的对齐方式。有如下几种属性。

   1、top(默认):排列于容器顶端。

   2、middle:垂直居中排列于容器中。

   3、stretch:垂直排列且拉伸义填补容器高度

   4、stretchmax:垂直拉伸,并且组件以最高高度的组件为准。

b)pack : 字符类型,指示组件在容器的位置,有如下几种属性。

   1、start(默认):组件在容器左边

   2、center:组件在容器中间

   3、end:组件在容器的右边

你可能感兴趣的:(Extjs4布局layout)