标准布局类(11中布局类)

标准布局类(11中布局类)_第1张图片

<div class="box">
    <div id="myAuto" class="w_320">
        <h2>自动布局类</h2>
    </div>
    <div id="myFit" class="w_320">
        <h2>Fit自适应布局</h2>
    </div>
    <div id="myAccordion" class="w_320">
        <h2>Accordion折叠布局</h2>
    </div>
    <div id="myCard" class="w_320">
        <h2>Card卡片式布局</h2>
    </div>
    <div id="percenAnchor" class="w_320">
        <h2>锚点布局百分比定位1</h2>
    </div>
    <div id="offsetsAnchor" class="w_320">
        <h2>锚点布局偏移值定位2</h2>
    </div>
    <div id="sidesAnchor" class="w_320">
        <h2>锚点布局参考线定位3</h2>
    </div>
    <div id="myAbsolute" class="w_320">
        <h2>Absolute绝对位置的布局</h2>
    </div>
    <div id="myCheckboxGroup" class="w_320">
        <h2>复选框布局</h2>
    </div>
    
    <div id="myColumnWidth" class="w_320">
        <h2>Column列布局1:固定列宽</h2>
    </div>
    
    <div id="myColumnBaiWidth" class="w_320">
        <h2>Column列布局2:百分比列宽</h2>
    </div>
    <div id="myColumn" class="w_320">
        <h2>Column列布局2:固定百分比结合使用</h2>
    </div>
    
    <div id="myTable" class="w_320">
        <h2>表格布局</h2>
    </div>
    
    <div id="myBorder" class="w_320">
        <h2>边框布局</h2>
    </div>
    
    <div id="myBox" class="w_320">
        <h2>盒子布局</h2>
    </div>
</div>
<!--CSS样式文件-->
<style> 
        .box { padding:50px 0 0 50px; }
        * { padding:0; margin:0; }
        .w_320 { width:320px; float:left; }
        .my-foo-trigger { border-radius:5px; }
        .aaa { background:red; }
</style>
Ext.onReady(function(){
    
    //标准布局类(11中布局类)
    //如果直接在面板上添加内容会很凌乱,如果划分不同的区域,在区域中添加内容将会很整洁,就要用到布局类
    
    //1.Auto布局类(Ext.layout.container.Auto)(默认方式)
    
    Ext.create('Ext.panel.Panel',{
    
        title : '默认Auto布局类',
        width : 250,
        height : 200,
        renderTo : 'myAuto',
        frame : true,
        bodyPadding : 5,
        layout : 'auto',//自动布局
        defaults : {
            bodyStyle : 'background-color:#ffffff'
        },
        //items配置项默认的xtype类型为panel,可以通过defaultType配置项进行更改
        items : [{
            title : '面板一',
            html : '面板一'
        },{
            title : '面板二',
            html : '面板二'
        }]
    });
    
    //2.Fit自适应布局(使唯一的子元素充满容器,只显示一个面板,第二个面板并不会显示)
    Ext.create('Ext.panel.Panel',{
        title : 'Fit自适应布局',
        width : 250,
        height : 200,
        renderTo : 'myFit',
        frame : true,
        layout : 'fit',//使唯一的子元素充满容器,只显示一个面板,第二个面板并不会显示
        defaults : {
            bodyStyle : 'background-color:#ffffff;'
        },
        items : [{
            title : '面板一',
            html : '面板一'
        },{
            title : '面板二',
            html : '面板二'
        }]
    });
    
    //3.Accordion折叠布局(任何时候都只有一个自面板处于打开状态)
    //制作分组内容或者分组菜单
    Ext.create('Ext.panel.Panel',{
        title : 'Accordion折叠布局',
        width : 250,
        height : 200,
        renderTo : 'myAccordion',
        frame : true,
        bodyPadding : 5,
        layout : 'accordion',
        defaults : {
            bodyStyle : 'padding:15px;background-color:#ffffff'
        },
        items : [{
            title : '面板一',
            html : '面板一'
        },{
            title : '面板二',
            html : '面板二'
        },{
            title : '面板三',
            html : '面板三'
        }]
    });
    
    //4.Card卡片式布局(用于向导或者标签页)
    //任何时候只有一个自面板处于显示状态
    var myCard =  Ext.create('Ext.panel.Panel',{
        title : 'Card卡片式布局',
        width : 250,
        height : 200,
        renderTo : 'myCard',
        frame :true,
        layout : 'card',//
        activeItem : 0,//设置默认显示第一个子面板
        bodyPadding : 5,
        defaults : {
            bodyStyle : 'padding:15px; background-color:#ffffff'
        },
        items : [{
            title : '嵌套面板一',
            html : '说明一',
            id : 'p1'
        },{
            title : '嵌套面板二',
            html : '说明二',
            id : 'p2'
        },{
            title : '嵌套面板三',
            html : '说明三',
            id : 'p3'
        }],
        buttons : [{
            text : '上一页',
            handler : changePage
        },{
            text : '下一页',
            handler : changePage
        }]
    });
    //触发函数
    function changePage(btn){
        
        var index = Number(myCard.layout.activeItem.id.substring(1));
        console.info(index);
        if(btn.text == '上一页'){
            index -= 1;
            if(index < 1){
                index = 1;
            }
        }else {
            index += 1;
            if(index > 3){
                index = 3;
            }
        }
        myCard.layout.setActiveItem('p'+index);
    }
    
    //5.Anchor锚点布局
    //(1)百分比定位,(2)偏移值定位,(1)参考线定位
    //5.1百分比定位
    Ext.create('Ext.panel.Panel',{
        title : '百分比定位',
        width : 250,
        height :200,
        renderTo : 'percenAnchor',
        frame : false,//渲染面板
        layout : 'anchor',
        defaults : {
            bodyStyle : 'padding:15px; background-color:#ffffff'
        },
        items : [{
            title : '子面板',
            anchor : '50% 50%'
        }]
    });
    //5.2 offsetsAnchor偏移值定位
    Ext.create('Ext.panel.Panel',{
        title : '偏移值定位',
        width : 250,
        height : 150,
        renderTo : 'offsetsAnchor',
        frame : false,//
        layout : 'anchor',
        defaults : {
            bodyStyle : 'padding:15px; background-color:#ffffff'
        },
        items : [{
            title : '子面板',
            anchor : '-10 -10'//宽高偏移父元素10像素
        }]
    });
    //5.3 sidesAnchor参考线定位
    Ext.create('Ext.panel.Panel',{
        title : '参考线定位',
        width : 250,
        height : 150,
        renderTo : 'sidesAnchor',
        frame : false,
        layout : 'anchor',
        autoScroll : true,
        defaults : {
            bodyStyle : 'padding:15px; background-color:#ffffff'
        },
        items : [{
            title : '子面板',
            width : 200,
            height : 100,
            anchor : 'r b',//相对于父容器的右边和底边的差值进行定位
            html : '说明'
        }]
    });
    
    //6. Absolute绝对位置的布局
    Ext.create('Ext.panel.Panel',{
        title : '',
        width : 250,
        height : 150,
        renderTo : 'myAbsolute',
        frame : false,
        layout : 'absolute',
        
        defaults : {
            width : 100,
            height : 70,
            frame : true,
            bodyStyle : 'padding:5px; background-color:#ffffff'
        },
        items : [{
            title : '面板一',
            x : 10,//横坐标距离父元素组编10像素
            y : 10,//纵坐标距离父元素组编10像素,
            html : '面板一的内容'
        },{
            title : '面板二',
            x : 130,//横坐标距离父元素组编10像素
            y : 40,//纵坐标距离父元素组编10像素,
            html : '面板二的内容'
        }]
    });
    
    //7. myCheckboxGroup复选框布局
    Ext.create('Ext.panel.Panel',{
    
        title : '复选框布局',
        width : 250,
        height : 150,
        renderTo : 'myCheckboxGroup',
        frame : true,
        bodyPadding : 5,
        defaults : {
            width : 240,
            labelWidth : 40,
            labelSeparator : ': '
        },
        items : [{
            fieldLabel : '爱好',
            xtype : 'checkboxgroup',
            columns : 3,
            items : [{
                name : 'love',
                boxLabel : '游泳',
                inputValue : 'swim'
            },{
                name : 'love',
                boxLabel : '游戏',
                inputValue : 'game'
            },{
                name : 'love',
                boxLabel : '游戏',
                inputValue : 'game'
            },{
                name : 'love',
                boxLabel : '游戏',
                inputValue : 'game'
            },{
                name : 'love',
                boxLabel : '游戏',
                inputValue : 'game'
            }]
        }]
    });
    
    //8. Column列布局
    //所有的columnWidth值相加必须等于1或者100%
    //8.1 指定固定列宽
    Ext.create('Ext.panel.Panel',{
        title : 'Column列布局 指定固定列宽',
        width : 250,
        height : 150,
        frame : true,
        renderTo : 'myColumnWidth',
        layout : 'column',
        defaults : {
            height : 100,
            frame : true,
            bodyStyle : 'background-color:#ffffff'
        },
        items : [{
            title : '子面板一',
            width : 100, //指定列宽100像素
            html : '列宽100像素'
        },{
            title : '子面板二',
            width : 100, //指定列宽100像素
            html : '列宽100像素'
        }]
    });
    
    //8.2 百分比列宽
    Ext.create('Ext.panel.Panel',{
        title : 'Column列布局 百分比列宽',
        width : 250,
        height : 150,
        frame : true,
        renderTo :'myColumnBaiWidth',
        layout : 'column',
        defaults : {
            height : 100,
            frame : true,
            bodyStyle : 'background-color:#ffffff'
        },
        items : [{
            title : '子面板一',
            columnWidth : 0.3 ,//百分比宽度30%
            html : '列宽<span style="color:red">30%</span>'
        },{
            title : '子面板二',
            columnWidth : 0.7, //百分比宽度70%
            html : '列宽<span style="color:red">70%</span>'
        }]
    });
    
    
    //8.3  固定百分比结合使用
    Ext.create('Ext.panel.Panel',{
        title : '固定百分比结合使用',
        width : 250,
        height : 150,
        frame : true,
        renderTo :'myColumn',
        layout : 'column',
        defaults : {
            height : 100,
            frame : true,
            bodyStyle : 'background-color:#ffffff'
        },
        items : [{
            title : '子面板一',
            idth : 100 ,//指定宽度100
            html : '列宽<span style="color:red">指定宽度100</span>'
        },{
            title : '子面板二',
            columnWidth : 0.3, //百分比宽度30%
            html : '列宽<span style="color:red">30%</span>'
        },{
            title : '子面板三',
            columnWidth : 0.7, //百分比宽度70%
            html : '列宽<span style="color:red">70%</span>'
        }]
    });
    
    //9. Table表格布局
    Ext.create('Ext.panel.Panel',{
    
        title : 'Table表格布局',
        width : 250,
        heigh : 150,
        frame : true,
        renderTo : 'myTable',
        layout : {
            type : 'table',//表格布局
            columns : 4//设置默认4列
        },
        defaults : {
            width : 50,
            height : 50,
            frame : true,
            bodyStyle : 'bakcground-color : #ffffff'
        },
        items :  [{
            title : '面板一',
            width : 150,
            colspan : 3//设置跨3列
        },{
            title : '面板二',
            height : 100,
            rowspan  : 2//跨2行
        },{
            title : '面板三'
        },{
            title : '面板四'
        },{
            title : '面板五'
        }]
    });
    
    //10. Border边框布局(面向应用的UI风格的布局)
    Ext.create('Ext.panel.Panel',{
        title : 'Border边框布局',
        width : 250,
        height : 200,
        frame : true,
        renderTo : 'myBorder',
        layout : 'border',
        defaults : {
            collapsible : true
        },
        items : [{
            title : '北部面板',
            region : 'north' ,//指定区域north
            height : 50,
            html : '头部'
        },{
            title : '南部面板' ,
            region : 'south',
            height : 50,
            html : '底部'
        },{
            title : '西部面板',
            region : 'west',
            width : 50,
            html : '左边'
        },{
            title : '东部面板',
            region : 'east',
            width : 50,
            html : '右边'
        },{
            title : '主要内容',
            region : 'center',//这个必须有
            html : '中间区域不能缺少'
        }]
    });
    
    //11. Box盒布局
    //水平盒、垂直盒
    Ext.create('Ext.panel.Panel',{
        title : '盒子布局',
        width : 300,
        height : 150,
        frame : true,
        renderTo : 'myBox',
        layout : {
            type : 'hbox',
            align : 'stretch'//子面板高度充满父容器
        },
        items : [{
            title : '子面板一',
            flex : 1,
            html : '1/4宽一'
        },{
            title : '子面板二',
            flex : 1,
            html : '1/4宽二'
        },{
            title : '子面板三',
            flex : 2,
            html : '1/2宽三'
        }]
    });
    
});


你可能感兴趣的:(标准布局类)