EXTJS UI布局.ppt

上传人:laozhun 文档编号:2934202 上传时间:2023-03-04 格式:PPT 页数:35 大小:342KB
返回 下载 相关 举报
EXTJS UI布局.ppt_第1页
第1页 / 共35页
EXTJS UI布局.ppt_第2页
第2页 / 共35页
EXTJS UI布局.ppt_第3页
第3页 / 共35页
EXTJS UI布局.ppt_第4页
第4页 / 共35页
EXTJS UI布局.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《EXTJS UI布局.ppt》由会员分享,可在线阅读,更多相关《EXTJS UI布局.ppt(35页珍藏版)》请在三一办公上搜索。

1、ExtJs UI 布局,我们先通过一个代码,来看看传统的布局是什么样子的 var viewport=new Ext.Viewport(layout:border,items:region:north,height:40,html:,region:west,width:100,html:菜单1菜单2,region:center,html:主要内容);,布局的基本用途,常见布局模式,FitLayoutBorderLayoutAccordionCardLayoutFormLayoutColumnLayoutTableLayoutAnchorLayout与AbsoluteLayout,FitLayou

2、t,我们先将前面用的grid加入的viewport中,看看页面变化时,表格是否也能随着变化,var store=new Ext.data.SimpleStore(fields:id,name,desc,data:1,name1,desc1,2,name2,desc2,3,name3,desc3,4,name4,desc4,5,name5,desc5,6,name6,desc6,7,name7,desc7,8,name8,desc8,9,name9,desc9,10,name10,desc10);var grid=new Ext.grid.GridPanel(title:grid,viewCon

3、fig:forceFit:true,store:store,columns:header:id,dataIndex:id,header:名称,dataIndex:name,header:描述,dataIndex:desc,tbar:new Ext.Toolbar(添加,修改,删除),bbar:new Ext.PagingToolbar(pageSize:15,store:store);var viewport=new Ext.Viewport(layout:fit,items:grid);,注意:使用了layout:fit组件的items只能放一个组件。即使放多个组件,也只能显示第一个组件。i

4、tems:title:panel,html:panel,grid,另外,items中的表格切忌不能设置autoHeight:true参数,因为这样会是FitLayout失效。它会重新计算表格高度,最后使得表格无法填充整个页面。当然,我们也可以把表格移植会window中 var win=new Ext.Window(width:400,height:300,layout:fit,items:grid);win.show();,因为FitLayout布局每次只能使用一个子组件,无法胜任比较复杂的布局任务,所以实际工作中我们使用的最多的是Borderlayout。它将整个布局分为东、西南、北、中五个

5、部分。除了中间部分,其它部分都可以省略。,BorderLayout,var viewport=new Ext.Viewport(layout:border,items:region:north,html:north,region:south,html:south,region:east,html:east,region:west,html:west,region:center,html:center);再次提醒,region:center不可或缺,如果没有程序会出错,这里面的子区域就是设置north、south、west、east四个区域。不包括中间部分center,因为中间部分的面积是根据其

6、它部分计算出来的。其中north、south只能设置高度(height),west、east只能设置宽度(width)。var viewport=new Ext.Viewport(layout:border,items:region:north,html:north,height:120,region:south,html:south,height:30,region:east,html:east,width:40,region:west,html:west,width:100,region:center,html:center);,如果,我们在上面代码中,给相关子区域使用了autoHeigh

7、t。因为所有原来的borderlayout中的子组件都是自动延伸,那么我们刚才设置的各个区域的宽和高都将失效。,Split的使用,使用split就允许用户自行拖动某一个区域的大小。var viewport=new Ext.Viewport(layout:border,items:region:north,html:north,region:west,html:west,width:100,split:true,region:center,html:center);需要注意的是,north、south只能上下拖动,west、east只能左右拖动。,有的时候,不能完全信任用户的输入,他们的一些动作

8、会使得页面的布局完全变得混乱,那么我们可以限制他们的拖动范围var viewport=new Ext.Viewport(layout:border,items:region:north,html:north,region:west,html:west,width:100,split:true,minSize:80,maxSize:120,region:center,html:center);,区域的展开和折叠,var viewport=new Ext.Viewport(layout:border,items:region:north,html:north,region:west,html:we

9、st,title:west,width:100,collapsible:true,region:center,html:center);我们看到设置了collapsible:true,其中west的title参数也要进行设置,因为折叠按钮是出现在标题部分的,如果没有为west区域设置title那么折叠按钮也就无法显示了。,实现折叠分组,类似QQ的效果var viewport=new Ext.Viewport(layout:border,items:region:west,width:200,layout:accordion,layoutConfig:titleCollapse:true,ani

10、mate:true,activeOnTop:false,items:title:第一栏,html:第一栏,title:第二栏,html:第二栏,title:第三栏,html:第三栏,region:center,split:true,border:true);,Accordion,布局的相关配置都在layoutConfig中,其中:titleCollapse:默认为true,单据标题就可以折叠子面板了。Animate:展开和折叠是是否使用动画效果activeOnTop:执行展开和折叠操作后,子面板的顺序是否会改变,Cardlayout 可以看做事一叠的卡片,每次只能看到一张卡片。var navH

11、andler=function(direction)var wizard=Ext.getCmp(wizard).layout;var prev=Ext.getCmp(move-prev);var next=Ext.getCmp(move-next);var activeId=wizard.activeItem.id;if(activeId=card-0)if(direction=1)wizard.setActiveItem(1);prev.setDisabled(false);else if(activeId=card-1)if(direction=-1)wizard.setActiveIte

12、m(0);prev.setDisabled(true);else wizard.setActiveItem(2);next.setDisabled(true);else if(activeId=card-2)if(direction=-1)wizard.setActiveItem(1);next.setDisabled(false);,Cardlayout,var viewport=new Ext.Viewport(layout:border,items:region:west,id:wizard,width:200,title:某某向导,layout:card,activeItem:0,bo

13、dyStyle:padding:15px,defaults:border:false,bbar:id:move-prev,text:上一步,handler:navHandler.createDelegate(this,-1),disabled:true,-,id:move-next,text:下一步,handler:navHandler.createDelegate(this,1),items:id:card-0,html:哈哈!欢迎用咱的向导。第一步,一共三步,id:card-1,html:第二步,一共三步,id:card-2,html:恭喜恭喜,完成了。第三步,一共三步,最后一步了。,re

14、gion:center,split:true,border:true);,控制位置和大小的布局,Anchorlayout 提供了灵活的布局方式第一种使用百分比进行配置 var viewport=new Ext.Viewport(layout:anchor,items:title:panel 1,html:panel 1,anchor:50%50%,title:panel 2,html:panel 2,anchor:80%);,第二种,直接配置与右侧和底部的边距。var viewport=new Ext.Viewport(layout:anchor,items:title:panel 1,htm

15、l:panel 1,anchor:-50-200/右侧、底部的距离,title:panel 2,html:panel 2,anchor:-100);,第三种:side,使用它的前提是作为布局的整体的父组件和布局内部的子组件都设置好了width、height和anchorsize属性。var viewport=new Ext.Viewport(layout:anchor,anchorSize:width:400,height:300,items:title:panel 1,html:panel 1,width:200,height:100,anchor:r b,title:panel 2,htm

16、l:panel 2,width:100,height:200,anchor:r b);,Anchorlayout组合配置,var viewport=new Ext.Viewport(layout:anchor,items:title:panel 1,html:panel 1,anchor:-100 40%,title:panel 2,html:panel 2,anchor:-200 60%);,absolutelayout,Anchorlayout布局中的子组件都是自上而下排列的,我们不能控制每个组件的位置。Absolutelayout通过绝对定位,来为我们解决这些问题。var viewpor

17、t=new Ext.Viewport(layout:absolute,items:title:panel 1,html:panel 1,x:50,y:0,anchor:-200 40%,title:panel 2,html:panel 2,x:200,y:10,anchor:-50 60%);,FormLayout,其实FormLayout也是AnchorLayout的一个子类,可以在它里面使用anchor设置的宽、高的比例。不过,它主要还是对表单进行布局。我们前面讲过的FormPanel使用它作为默认的布局方式,,var viewport=new Ext.Viewport(layout:fi

18、t,items:xtype:form,title:信息,labelAlign:right,labelWidth:50,frame:true,defaultType:textfield,items:fieldLabel:名称,name:name,anchor:90%,fieldLabel:生日,name:birthday,xtype:datefield,anchor:90%,fieldLabel:备注,name:desc,xtype:textarea,anchor:90%-100);,分列式布局ColumnLayout,var viewport=new Ext.Viewport(layout:c

19、olumn,items:title:Column 1,columnWidth:.25,title:Column 2,columnWidth:.4,title:Column 3,columnWidth:.35);,var viewport=new Ext.Viewport(layout:column,items:title:Column 1,width:120,title:Column 2,columnWidth:.7,title:Column 3,columnWidth:.3);使用columnWidth来平分剩余部分的宽度,TableLayout,var viewport=new Ext.V

20、iewport(layout:fit,items:title:Table Layout,layout:table,defaults:bodyStyle:padding:20px,layoutConfig:columns:3,items:html:Cell A content,rowspan:2,html:Cell B content,colspan:2,html:Cell C content,html:Cell D content);,使用viewport对整个页面布局,var viewport=new Ext.Viewport(layout:border,items:region:north

21、,height:40,html:,region:west,width:100,html:菜单1菜单2,region:center,xtype:viewport,html:主要内容);通过这个代码,我们发现viewport的冲突问题,在外部已经使用了viewport而在内部又定义了viewport,造成两者出现冲突,布局失败。,实现复杂布局,/表格配置开始 var cm=new Ext.grid.ColumnModel(header:编号,dataIndex:id,header:名称,dataIndex:name,header:描述,dataIndex:descn);var data=1,nam

22、e1,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);/表格配置结束,/树形配置开始 v

23、ar tree=new Ext.tree.TreePanel(loader:new Ext.tree.TreeLoader(dataUrl:tree.txt),title:west,region:west,split:true,border:true,collapsible:true,width:120,minSize:80,maxSize:200);var root=new Ext.tree.AsyncTreeNode(text:偶是根);tree.setRootNode(root);root.expand();/树形配置结束,text:01,children:text:01-01,leaf

24、:true,text:01-02,children:text:01-02-01,leaf:true,text:01-02-02,leaf:true,text:01-03,leaf:true,text:02,leaf:true,/表单配置开始 var form=new Ext.form.FormPanel(defaultType:textfield,labelAlign:right,title:form,labelWidth:50,frame:true,width:220,title:center-center,region:center,items:fieldLabel:文本框,anchor:

25、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);/布局结束,标题栏:viewport加panel实现复杂布局 状态栏:Copyright by,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号