form和column:extJS的佈局

對於一個容器組件,比如Ext .FormPanel,其內部空間無非是按照橫向或縱向劃分;如果需要更復雜的佈局方式,就對第一次劃分得到的子區域進行再劃分。

form的含義是把容器按照橫向劃分,劃分得到的行數與容器內的子元素(直接子元素,而不包含子元素內部的元素)個數相同,每個元素佔一行;
column的含義是把容器按照縱向劃分,劃分得到的列數同上。

下面看看如何使用form和column
比如讓我們實現一個登錄的界面:

var login = new Ext . FormPanel ({  

    labelAlign : ' top ' ,

    frame : true ,

    title : ' Login ' ,

    id : ' login ' ,

    bodyStyle : ' padding:5px 5px 0 ' ,

    width : 400 ,

    items : [{

        layout : ' column ' //把整個空間劃分成兩列

        items : [{

            html : ' <img src="loginLogo.png" /> '   //左邊列放一個logo

        } , {

            columnWidth : .5 ,

            layout : ' form ' , //右邊列再分成上下兩行

            items : [{

                xtype : ' textfield ' ,

                fieldLabel : ' Username ' , //第一行是用戶名輸入框

                name : ' name ' ,

                  id : ' name ' ,

                anchor : ' 100% '

            } , {

                xtype : ' textfield '

                fieldLabel : ' Password ' , //第二行是密碼輸入框

                name : ' pass ' ,

                id : ' pass ' ,

                anchor : ' 100% ' ,

                inputType : ' password '

            }]

        }]

    }] ,

    buttons : [{

        text : ' OK ' ,    //用戶名密碼確認按鈕

        handler : function (){                

            var   name = Ext . get ( ' name ' ) . dom . value ;

            var   pass = Ext . get ( ' pass ' ) . dom . value ;

            if ( name == ' good ' && pass == ' good ' ){

                //login correct, do something

            } else {

                Ext . MessageBox . alert ( ' Warning! ' , ' Incorrect Login ' ) ;

            }

                           

        } , {

        text : ' Reset ' //用戶名密碼重置按鈕

        handler : function (){

            Ext . get ( ' name ' ) . dom . value = '' ;

            Ext . get ( ' pass ' ) . dom . value = '' ;

        }

    } ]

} );

login . render ( document . body ) ;

login . getEl () . center () ;

這段代碼 中,第8行至第30行與本文的主題“佈局”相關。這幾行代碼把一個FormPanel分成兩列,左邊放一個圖片logo;右列再被細分爲上下兩行,上面一行爲用戶名輸入框,下面一行爲密碼輸入框。這樣一個簡單的例子已經展示了佈局的嵌套,以此遞歸地嵌套下去,就可以創建出非常複雜的佈局方式。但是切記,網頁是越簡單越好。

從第31行開始,是爲了這段login代碼的完整性,加入了用於事件響應的按鈕(buttons)。

最後兩行代碼的含義是把該登錄界面顯示出來,並居中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章