• 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
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    CF995A Tesla
    CF961D Pair Of Lines
    P1186 玛丽卡
    CF986B Petr and Permutations
    hdu6331 Problem M. Walking Plan
    Edison UVALive3488
    Be a Smart Raftsman SGU475
    100198H Royal Federation
    100197G Robbers
    Evil Book -- CodeChef
  • 原文地址:https://www.cnblogs.com/ronaldhan/p/3286033.html
Copyright © 2020-2023  润新知