ExtJS3 布局

前端开发中,页面布局是首先要考虑的内容,今天又看了Ext中的局部,小结如下。

布局中最常用的是BorderLayout:此种方式默认将页面划分为5个区域,分别是north、west、center、east、south,其中north和south只能调整height属性,west、east和center只能调整width属性,center是必不可少的部分,其他部分可选。

另外一种布局方式为Accodion(可折叠的、手风琴式):可参考QQ中分组的形式,一般将此种方式嵌套入其他布局中。

CardLayout可以实现向导式的页面显示,另外一种布局方式,用于控制位置和大小的布局为AnchorLayout和AbsoluteLayout,AnchorLayout可以设定空间所锚定的位置,具体而言是使用anchor:r b这样的格式,其中r表示相对于right一侧,b则表示相对于bottom一侧,可以使用负值,此时表示子组件的大小=整体大小-r(or b),anchor:-50 -100 表示此组件的右边界距离锚定控件右边界的距离为50px,距离下边界距离为100px。AbsoluteLayout通过指定x、y参数来控制布局。

其他布局方式还有分列式布局和表格状布局,均比较简单。

举个例子,先上效果图

可以很明显看出来大框架使用的是borderLayout,在west部分使用了树形控件,center部分嵌套了一个borderLayout,north部分放置表格,center部分放置表单。

    // 表格配置开始
    var cm = new Ext.grid.ColumnModel([
        {header:'编号',dataIndex:'id'},
        {header:'名称',dataIndex:'name'},
        {header:'描述',dataIndex:'descn'}
    ]);

    var data = [
        ['1','name1','descn1'],
        ['2','name2','descn2'],
        ['3','name3','descn3'],
        ['4','name4','descn4'],
        ['5','name5','descn5']
    ];

    var ds = new Ext.data.Store({
        proxy: new Ext.data.MemoryProxy(data),
        reader: new Ext.data.ArrayReader({}, [
            {name: 'id'},
            {name: 'name'},
            {name: 'descn'}
        ])
    });
    ds.load();

    var grid = new Ext.grid.GridPanel({
        ds: ds,
        cm: cm,
        title: 'center-north',
        region: 'north'
    });
    // 表格配置结束

    // 树形配置开始
    var tree = new Ext.tree.TreePanel({
        loader: new Ext.tree.TreeLoader({dataUrl: '10-05.tree.txt'}),
        title: 'west',
        region: 'west',
        split: true,
        border: true,
        collapsible: true,
         120,
        minSize: 80,
        maxSize: 200
    });

    var root = new Ext.tree.AsyncTreeNode({text:'偶是根'});
    tree.setRootNode(root);
    root.expand();
    // 树形配置结束

    // 表单配置开始
    var form = new Ext.form.FormPanel({
        defaultType: 'textfield',
        labelAlign: 'right',
        title: 'form',
        labelWidth: 50,
        frame:true,
         220,

        title: 'center-center',
        region: 'center',

        items: [{
            fieldLabel: '文本框',
            anchor: '90%'
        }],
        buttons: [{
            text: '按钮'
        }]
    });
    // 表单配置结束

    // 布局开始
    var viewport = new Ext.Viewport({
        layout:'border',
        items:[{
            region: 'north',
            contentEl: 'north-div',
            height: 80,
            bodyStyle: 'background-color:#BBCCEE;'
        },{
            region: 'south',
            contentEl: 'south-div',
            height: 20,
            bodyStyle: 'background-color:#BBCCEE;'
        },tree,{
            region: 'center',
            split: true,
            border: true,
            layout: 'border',
            items: [grid,form]
        }]
    });
    // 布局结束

应用时参考这个可以完成更复杂的页面布局。

刚准备写,就看到了一篇介绍ExtJS Layout的文章,贴上地址

http://www.cnblogs.com/fsjohnhuang/archive/2013/02/19/2917233.html

相关书籍可参考:《深入浅出Ext JS》

作者:RonaldHan
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
原文地址:https://www.cnblogs.com/ronaldhan/p/3286033.html