在EXT中,所有的布局都是从Ext.Container开始的,Ext.Container的父类是Ext.BoxComponent。Ext.BoxComponent是一个盒子组件,可以定义宽度,高度和位置等属性。作为子类,Ext.Container也继承了这些功能,更重要的是,Ext.Container可以使用layout和items属性未作内部的子组件进行布局。
事实上,我们经常用来设置布局的子类也只有几个,比如用Ext.Viewport进行页面的整体布局,使用Ext.Panel和Ext.Window进行各种嵌套布局,使用Ext.form.FieldSet和Ext.form.FormPanel为表单进行布局。其余的子类都使用默认的渲染形式,很少进行内部布局。
与Ext.Container相似,所有的布局类也有一个共同的超类Ext.layout.ContainerLayout。凡是继承该超类的子类都可以对Ext.Container和它的子类进行布局定义,这两颗继承树结合在一起便构成了EXT中完整的布局系统。
最简单的布局FitLayout
1var viewport = new Ext.Viewport({
2 layout:'fit',
3 items:[grid]
4})
2 layout:'fit',
3 items:[grid]
4})
它可以自动适应页面大小的变化,填充整个页面。但如果在items中放入两个控件,会发现第二个控件没有任何效果。即FitLayout布局每次只能使用一个子组件。
常用的边框布局BorderLayout
它将整个布局区域分成了东、西、南、北、中5个部分,除了中间区域以外,其他的区域又都是可以省略的。
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'}
]
});
layout:'border',
items:[
{region:'north',html:'north'},
{region:'south',html:'south'},
{region:'east',html:'east'},
{region:'west',html:'west'},
{region:'center',html:'center'}
]
});
重复一遍,center是绝对不能省的,否则会报错导致程序中断。
在此布局中,north和south可以通过设置height来设置高度(也只能设置高度);west和east部分可以通过设置width来设置宽度(也只能设置宽度);同时,我们可以使用split来允许用户自行拖放以改变某一个区域的大小。如:
1var viewport = new Ext.Viewport({
2 layout:'border',
3 items:[
4 {region:'north',html:'north'},
5 {region:'west',html:'west',width:100,split:true},
6 {region:'center',html:'center'}
7 ]
8})
2 layout:'border',
3 items:[
4 {region:'north',html:'north'},
5 {region:'west',html:'west',width:100,split:true},
6 {region:'center',html:'center'}
7 ]
8})
当然,在使用split属性时,我们也可以搭配minSize和MaxSize属性来控制最小高度和最大高度。
使用collapsible:true激活了区域的折叠功能,这需要搭配title参数一起使用。
制作伸缩菜单的布局----Accordion
1var viewport = new Ext.Viewport({
2 layout:'border',
3 items:[{
4 region:'west',
5 width:200,
6 layout:'accordion',
7 layoutConfig:{
8 titleCollapse:true,
9 animate:true,
10 activeOnTop:false
11 },
12 items:[{
13 title:'第一栏',
14 html:'第一栏'
15 },{
16 title:'第二栏',
17 html:'第二栏'
18 },{
19 title:'第三栏',
20 html:'第三栏'
21 }]
22 },{
23 region:'center',
24 split:true,
25 border:true
26 }]
27});
2 layout:'border',
3 items:[{
4 region:'west',
5 width:200,
6 layout:'accordion',
7 layoutConfig:{
8 titleCollapse:true,
9 animate:true,
10 activeOnTop:false
11 },
12 items:[{
13 title:'第一栏',
14 html:'第一栏'
15 },{
16 title:'第二栏',
17 html:'第二栏'
18 },{
19 title:'第三栏',
20 html:'第三栏'
21 }]
22 },{
23 region:'center',
24 split:true,
25 border:true
26 }]
27});
实现操作向导的布局----CardLayout
CardLayout可以看做是一叠卡片,从上面看起来就像是一张卡片,可以把中间的卡片抽出来,放到最上面,可以每次只能看到一张卡片。
1var viewport = new Ext.Viewport({
2 layout:'border',
3 items:[{
4 region:'west',
5 id:'wizard',
6 width:200,
7 title:'某某向导',
8 layout:'card',
9 activeItem:0,
10 bodyStyle:'padding:15px',
11 defaults:{
12 border:false
13 },
14 bbar:[{
15 id:'move-prev',
16 text:'上一步',
17 handler:navHandler.createDelegate(this,[-1]),
18 disalbed:true
19 },'->',{
20 id:'move-next',
21 text:'下一步',
22 handler:navHandler.createDelegate(this,[1])
23 }],
24 items:[{
25 id:'card-0',
26 html:'<h1>哈哈!<br/>欢迎用咱的向导。</h1><p>第一步,一共三步</p>'
27 },{
28 id:'card-1',
29 html:'<p>第二步,一共三步</p>'
30 },{
31 id:'card-2',
32 html:'<h1>恭喜恭喜,完成了</p>'
33 }]
34 },{
35 region:'center',
36 split:true,
37 border:true
38 }]
39});
40
2 layout:'border',
3 items:[{
4 region:'west',
5 id:'wizard',
6 width:200,
7 title:'某某向导',
8 layout:'card',
9 activeItem:0,
10 bodyStyle:'padding:15px',
11 defaults:{
12 border:false
13 },
14 bbar:[{
15 id:'move-prev',
16 text:'上一步',
17 handler:navHandler.createDelegate(this,[-1]),
18 disalbed:true
19 },'->',{
20 id:'move-next',
21 text:'下一步',
22 handler:navHandler.createDelegate(this,[1])
23 }],
24 items:[{
25 id:'card-0',
26 html:'<h1>哈哈!<br/>欢迎用咱的向导。</h1><p>第一步,一共三步</p>'
27 },{
28 id:'card-1',
29 html:'<p>第二步,一共三步</p>'
30 },{
31 id:'card-2',
32 html:'<h1>恭喜恭喜,完成了</p>'
33 }]
34 },{
35 region:'center',
36 split:true,
37 border:true
38 }]
39});
40
示例代码实现了大致的逻辑,但控制上下页翻页的代码(handler)未详细给出。
控制位置和大小的布局----AnchorLayout和AbsoluteLayout
AnchorLayout提供了一种灵活的布局方式,即可以为item中的每个组件指定与总体布局大小的差值,也可以设置一个比例使子组件可以根据整体自行计算本身的大小。它为我们提供给了三种配置方式。
第一种方式是使用百分比进行配置,我们可以设置某一个子组件占整体长和宽的百分比。如:
1 var viewport = new Ext.Viewport({
2 layout:'anchor',
3 items:[{
4 title:'panel 1',
5 html:'panel 1',
6 anchor:'50% 50%'
7 },{
8 title:'panel 2',
9 html:'panel 2',
10 anchor:'80%'
11 }]
12 });
2 layout:'anchor',
3 items:[{
4 title:'panel 1',
5 html:'panel 1',
6 anchor:'50% 50%'
7 },{
8 title:'panel 2',
9 html:'panel 2',
10 anchor:'80%'
11 }]
12 });
第二种方式是直接设置与右侧和底部的边距,如:
1 var viewport = new Ext.Viewport({
2 layout:'anchor',
3 items:[{
4 title:'panel 1',
5 html:'panel 1',
6 anchor:'-50 -200'
7 },{
8 title:'panel 2',
9 html:'panel 2',
10 anchor:'-100'
11 }]
12 });
13});
2 layout:'anchor',
3 items:[{
4 title:'panel 1',
5 html:'panel 1',
6 anchor:'-50 -200'
7 },{
8 title:'panel 2',
9 html:'panel 2',
10 anchor:'-100'
11 }]
12 });
13});
第三种方式称为side。使用它的前提是:为作为布局整体的父组件和布局内部的子组件都设置好width、height和anchorSize属性。AnchorLayout会记录布局整体与子组件的大小上的差值,为以后调整布局提供依据。
1 var viewport = new Ext.Viewport({
2 layout:'anchor',
3 anchorSize:{width:400,height:300},
4 items:[{
5 title:'panel 1',
6 html:'panel 1',
7 width:200,
8 height:100,
9 anchor:'r b'
10 },{
11 title:'panel 2',
12 html:'panel 2',
13 width:100,
14 height:200,
15 anchor:'r b'
16 }]
17 });
2 layout:'anchor',
3 anchorSize:{width:400,height:300},
4 items:[{
5 title:'panel 1',
6 html:'panel 1',
7 width:200,
8 height:100,
9 anchor:'r b'
10 },{
11 title:'panel 2',
12 html:'panel 2',
13 width:100,
14 height:200,
15 anchor:'r b'
16 }]
17 });
我们为Viewport设置了anchorSize,这是一个包含宽度和高度信息的JSON对象,以此作为以后计算差值的基准。然后在panel 1和panel 2中设置宽度和高度的信息。anchor的设置只有anchor:'r b'一种,这是固定的写法,也可以写成anchor:'right buttom',两种写法完全相同。
AbsoluteLayout是AnchorLayout的一个子类,继承了AnchorLayout的所有特性。AnchorLayout布局下的子组件都是自上而下竖直排列的,不能控制每个组件的位置,而AbsolutLayout可以通过设置x,y参数达到控制子组件位置的效果。
表单专用的布局FormLayout
FormLayout也是AnchorLayout的一个子类,可以再它里面使用anchor设置宽和高的比例。但是它主要还是用于对表单进行布局。首先要明白一点,Ext.form.FormPanel使用它作为默认的布局方式。也正因为使用了FormLayout布局,我们设置的fieldLabel、boxLabel才能显示出来,而FormLayout里也提供给了一系列的参数来控制这些显示效果。
hideLabels:是否隐藏field的标签
itemCls:表单显示的样式
labelAlign:标签的对齐方式
labelPad:标签空白的像素值
labelWidth:标签宽度
clearCls:清除div渲染的CSS样式
fieldLabel:对应field的标签内容
hideLabel:是否隐藏标签
itemCls:Field的CSS样式
labelSeparator:标签和field之间的分隔,默认是:
labelStyle:标签的CSS样式
分列式的布局ColumnLayout
1var viewport = new Ext.Viewport({
2 layout:'column',
3 items:[{
4 title:'Column 1',
5 columnWidth:.25
6 },<span style
2 layout:'column',
3 items:[{
4 title:'Column 1',
5 columnWidth:.25
6 },<span style
相关推荐
ExtJS的核心特性包括组件化设计、可定制的布局管理、强大的数据绑定机制以及一系列预设的UI组件。在4.1.1版本中,这些特性得到了进一步的增强和完善。例如,组件系统允许开发者将UI元素视为独立的对象,可以组合、...
EXTJS4 是 Sencha 公司推出的一款强大的 JavaScript 框架,专为构建富客户端 Web 应用程序而设计。它提供了丰富的组件库、数据管理、强大的图表以及灵活的布局系统,使得开发者能够轻松创建功能丰富的交互式界面。...
在本篇博客中,我们将聚焦于"accordion布局"这一特性,它是ExtJS布局系统中的一种特殊形式。 Accordion布局,又称为折叠面板布局,允许在一个容器内放置多个面板,这些面板会像手风琴一样展开和折叠。这种布局模式...
1. **样式文件**: 主题包通常会包含CSS文件,这些文件定义了ExtJS组件的颜色、字体、边距、布局等样式属性,使其符合Bootstrap的设计规范。 2. **图像资源**: 为了实现Bootstrap的视觉效果,可能会包含一些背景图像...
5. **布局管理**:ExtJS强大的布局系统,如`BorderLayout`、`FormLayout`、`FitLayout`等,可以帮助创建复杂的窗口布局,模仿Windows多窗口并排显示的效果。 6. **拖放功能**:通过ExtJS的`DragDrop`插件,可以实现...
ExtJs常用布局--layout详解实例代码: ExtJs常见的布局方式有:border、form、absolute、column、accordion、table、fit、card、anchor 另外,不常见的布局有:tab、vbox、hbox 具体使用方法可见该文件的案例代码。 ...
3. **布局管理**:拥有各种内置布局,如网格、表格、卡片等,适应不同的界面设计需求。 4. **MVC架构**:遵循Model-View-Controller模式,便于代码组织和维护。 5. **主题支持**:提供了多种预设主题,可以轻松改变...
这个版本优化了性能,修复了大量已知问题,同时引入了新的组件和布局管理器,以满足更复杂的应用需求。例如,它提供了更丰富的图表组件,使得数据可视化更为直观。 2. **源码分析** "ext-4.2.2-gpl"目录下的源码...
ExtJS 的核心特性包括组件化设计、数据绑定、丰富的UI组件、强大的表单处理、灵活的布局管理以及响应式设计。在6.2.0 版本中,这些方面可能有所增强和完善: 1. **组件系统**:ExtJS 采用组件化开发模式,允许...
7. **布局管理**:ExtJS提供了多种布局方式,如`fit`(适应)布局,使组件完全填充其容器。在“HelloWorld”例子中,可能会使用这种布局让文本居中。 8. **渲染组件**:最后,你需要调用`show`方法或`renderTo`属性...
文件如`layout.js`可能是EXTJS的布局配置文件,而`.sln`和`.suo`是Visual Studio项目解决方案和用户特定选项文件,用于管理和编辑项目。通过深入理解和掌握这些关键技术,可以更好地维护和改进这个系统。
ExtJS 3.0提供了多种布局模式,如“fit”(适应性布局)、“border”(边界布局)、“form”(表单布局)等,可以灵活地调整组件的大小和位置。布局管理器使得开发者无需关心具体的CSS样式,只需指定布局类型,框架...
3. **响应式设计**:ExtJS 7.0.0支持多设备和屏幕尺寸的响应式布局,确保应用程序在桌面、平板电脑和手机上都能正常运行,适应不同的视口大小。 4. **性能优化**:新版本提升了框架的运行效率,包括更快的应用程序...
7. **响应式设计**:ExtJS支持响应式布局,意味着应用可以根据用户的设备和屏幕尺寸自动调整布局,确保在桌面、平板和手机上都能提供良好的用户体验。 8. **图表组件**:ExtJS的图表组件功能强大,可以创建各种复杂...
ExtJS是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架。 功能丰富,无人能出其右。 无论是界面之美,还是功能之强,ext的表格控件都高居榜首。 单选行,多选行,高亮显示选中的行,推拽...
4. **布局管理**:ExtJS的布局系统允许开发者定义容器的布局方式,如表单布局、流式布局、绝对布局等,使得组件能够在不同屏幕尺寸下自动适应和调整。 5. **数据绑定**:通过Data Package,ExtJS实现了视图和数据的...
- `extjs-lightbox.css`:样式表文件,定义了Lightbox的外观和布局。 - `images/`:存放示例图片的目录。 - `docs/`:可能包含关于如何使用和配置Lightbox的文档。 - `examples/`:可能有更多样化的使用示例。 在...
2. **布局管理**:EXTJS 提供了多种布局方式,如表单布局、流式布局、绝对布局等,能够根据需要灵活调整组件的位置和大小,适应不同屏幕尺寸和设备。 3. **数据绑定**:EXTJS 4.1.1 包含了强大的数据模型和数据存储...
5. **布局管理**:3.2.1版本的ExtJS有多种布局方式,如Fit布局、Form布局、Table布局、Column布局等,可以根据需求灵活调整组件的布局。 6. **拖放功能**:支持组件的拖放操作,可以轻松实现界面元素的动态组织和...
ExtJS 是一个强大的JavaScript框架,主要用于构建富客户端Web应用程序。这个特定的压缩包"ExtJS-4.2.6扩展ux插件89个"包含了Ext JS 4.2.6版本的一个重要组件:ux(用户界面扩展)插件。这些插件提供了额外的功能和...