extjs布局(一)
2020-12-13 05:40
标签:style blog class c code java Ext常用的布局都在Ext.layout下,这里几乎涵盖了所有的布局方式,满足开发者需求。那么我们就其中常用的方式逐一介绍。 Border布局是Ext中常用布局方式(经常用到整个页面的总体布局),感觉用的几率很大。在看代码之前先熟悉一种特殊的容器ViewPort,它是对于浏览器视窗的抽象,你可以将它理解为浏览器的可见区域,它将渲染到document.body并自动调整大小,一个页面只能创建一个Viewport。 从字面就知道Column布局就是列布局,例如我一个panel中还有两个子panel现在想要左侧显示一个右侧显示一个怎么办?这是可以选择Column将父Panel分为两列,左侧一个右侧一个。 如果从复杂度来说fit布局应该算是最简单的了,设置是最少的。Fit布局同样也是设置父容器的layout属性,但是子容器不用设置任何相应属性。它的目的就是为了让子容器能够自适应于父容器(用了fit布局子容器设置宽度无效),但是请注意如果父容器有多个子容器,只会显示第一个。 Table布局多数用在较为复杂的情况下,想一想做web开发总不能就上面几种简单情况吧,因此也就是说Table布局还是很常用的。当然,但是和其他布局相比其参数设置也稍微一些(不用怕,事实上还是很少的)。 这个布局是专门为表单而设计的布局方式,当然多数是用在FormPanel中(它也是FormPanel默认的布局方式)。我们前面说过FormPanel但是没有涉及复杂布局,事实实际应用中更多的是较复杂的布局。
extjs布局(一),搜素材,soscw.com extjs布局(一) 标签:style blog class c code java 原文地址:http://blog.csdn.net/yancongmin0702/article/details/26100427Border布局
var pnNorth=new Ext.Panel({
id:‘pnNorth‘,
autoWidth:true,
heigth:80,
frame:true,
region:‘north‘,
html:‘这里放置页头内容‘
});
var pnWest=new Ext.Panel({
id:‘pnWest‘,
title:‘菜单项‘,
width:200,
heigth:‘auto‘,
split:true,//显示分隔条
region:‘west‘,
collapsible:true
});
var pnCenter=new Ext.TabPanel({
region:‘center‘,
activeTab:0,
items:[
{
title:‘收件箱‘,
authHeight:true,
closable:true,//是否可关闭
html:‘这里显示所收邮件。。。‘
}
]
});
var vp=new Ext.Viewport({
layout:"border",
items:[
pnNorth,
pnWest,
pnCenter
]
});
Column布局
var pnSub1=new Ext.Panel({
height:300,
columnWidth:.3,
html:‘这是子panle1‘
});
var pnSub2=new Ext.Panel({
height:300,
columnWidth:.7,
html:‘这是子panle2‘
});
var pn=new Ext.Panel({
id:‘pn‘,
title:‘父Panel‘,
renderTo:‘divPanel‘,
width:800,
height:300,
layout:‘column‘,
items:[
pnSub1,
pnSub2
]
});
Fit布局
var pnSub1=new Ext.Panel({
title:"子panel1",
html:"子panel1(会显示)"
});
var pnSub2=new Ext.Panel({
title:"子panel2",
html:"子panel2(不会显示)"
});
var pn=new Ext.Panel({
renderTo:"divPanel",
title:"父panel",
width:800,
height:200,
layout:"fit",
items:[
pnSub1,
pnSub2
]
});
Table布局
new Ext.Panel({
title:"父Panel",
renderTo:"divPanel",
width:900,
height:200,
layout:"table",
layoutConfig:{
columns:3
},
defaults:{
height:100,
width:300
},
items:[
{
html:"第一个子panel(行:1,列:1)",
rowspan:2,//合并行
height:200
},
{
html:"第二个子panel(行:1,列:2)",
colspan:2,//合并列
width:600
},
{
html:"第三个子panel(行:2,列:1)"
},
{
html:"第四个子panel(行:2,列:2)"
}
]
});
Form布局
new Ext.Panel({
renderTo:"divPanel",
title:"这个是Panel",
width:300,
height:120,
bodyStyle:‘padding:10‘,
layout:"form",
hideLabels:false,
labelAlighn:"right",
defaultType:"textfield",
items:[
{fieldLabel:"姓名",name:"name"},
{fieldLabel:"年龄",name:"age"}
]
});
new Ext.FormPanel({
renderTo:"divPane2",
title:"这个是FormPanel",
width:300,
height:120,
bodyStyle:‘padding:10‘,
layout:"form",
hideLabels:false,
labelAlighn:"right",
defaultType:"textfield",
items:[
{fieldLabel:"姓名",name:"name"},
{fieldLabel:"年龄",name:"age"}
]
});
从代码我们也可看出来,区别就是对于Panel我们配置了layout为form,从这也能看出来说FormPanel默认的布局就是form布局,所以对于习惯于用Panel而不习惯用FormPanel的朋友尽管用Panel,但是一定要考虑好提交的问题,如果使用panel的话,要做提交可是要一个个获得控件的值的,而FromPanel则不需要。Ext.onReady(function(){
var pnRow1=new Ext.Panel({
border:false,
layout:‘column‘,
items:[
new Ext.Panel({
columnWidth:.5,
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘textfield‘,
fieldLabel:‘姓名‘,
name:‘uname‘,
anchor:‘95%‘
}
]
}),
new Ext.Panel({
columnWidth:.3,
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘radio‘,
fieldLabel:‘性别‘,
boxLabel:‘男‘,
name:‘sex‘,
inputValue:‘男‘,
checked:true,
anchor:"95%"
}
]
}),
new Ext.Panel({
columnWidth:.2,
layout:‘form‘,
border:false,
labelWidth:1,
items:[
{
xtype:‘radio‘,
boxLabel:‘女‘,
name:‘sex‘,
inputValue:‘女‘,
labelSeparator:‘‘,
anchor:"95%"
}
]
})
]
});
var pnRow2=new Ext.Panel({
layout:‘column‘,
border:false,
items:[
new Ext.Panel({
columnWidth:.5,
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘datefield‘,
name:‘birthday‘,
fieldLabel:‘生日‘,
anchor:‘95%‘
}
]
}),
new Ext.Panel({
columnWidth:.5,
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘combo‘,
name:‘study‘,
store:[‘专科‘,‘本科‘,‘硕士‘,‘博士‘],
fieldLabel:‘学历‘,
anchor:‘95%‘
}
]
})
]
});
var pnRow3=new Ext.Panel({
layout:‘column‘,
border:false,
items:[
new Ext.Panel({
columnWidth:.3,
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘checkbox‘,
name:‘hoby‘,
inputValue:‘computer‘,
fieldLabel:‘爱好‘,
boxLabel:‘计算机‘,
anchor:‘95%‘
}
]
}),
new Ext.Panel({
columnWidth:.3,
layout:‘form‘,
border:false,
labelWidth:1,
labelAlign:‘right‘,
items:[
{
xtype:‘checkbox‘,
name:‘hoby‘,
inputValue:‘football‘,
boxLabel:‘足球‘,
labelSeparator:‘‘,
anchor:‘95%‘
}
]
}),
new Ext.Panel({
columnWidth:.4,
layout:‘form‘,
border:false,
labelWidth:1,
labelAlign:‘right‘,
items:[
{
xtype:‘checkbox‘,
name:‘hoby‘,
intputValue:‘tinyTable‘,
boxLabel:‘乒乓球‘,
labelSeparator:‘‘,
anchor:‘95%‘
}
]
})
]
});
var pnRow4=new Ext.Panel({//当然这里直接在FormPanel中添加TextField就可以了,因为只有一行,但是为了一致以及对齐方便我这里还是放到了panel中
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘textfield‘,
name:‘email‘,
fieldLabel:‘住址‘,
anchor:‘98%‘
}
]
});
var pnRow5=new Ext.Panel({
layout:‘form‘,
border:false,
labelWidth:40,
labelAlign:‘right‘,
items:[
{
xtype:‘htmleditor‘,
name:‘note‘,
fieldLabel:‘备注‘,
height:200,
anchor:‘98%‘
}
]
});
new Ext.FormPanel({
renderTo:"divPanel",
title:"个人信息录入",
width:600,
bodyStyle:‘padding:10px‘,
layout:"form",
items:[
pnRow1,
pnRow2,
pnRow3,
pnRow4,
pnRow5
]
});
});
下一篇:springboot 初识