ExtJs布局详解.docx

上传人:b****9 文档编号:25710649 上传时间:2023-06-11 格式:DOCX 页数:16 大小:80.49KB
下载 相关 举报
ExtJs布局详解.docx_第1页
第1页 / 共16页
ExtJs布局详解.docx_第2页
第2页 / 共16页
ExtJs布局详解.docx_第3页
第3页 / 共16页
ExtJs布局详解.docx_第4页
第4页 / 共16页
ExtJs布局详解.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

ExtJs布局详解.docx

《ExtJs布局详解.docx》由会员分享,可在线阅读,更多相关《ExtJs布局详解.docx(16页珍藏版)》请在冰豆网上搜索。

ExtJs布局详解.docx

ExtJs布局详解

1.ExtJs布局详解

2.序言

  1、XX百科上说:

ExtJs功能丰富,无人能出其右。

无论是界面之美,还是功能之强,extjs都高居榜首。

  2、呵呵,界面之美当是少不了布局的,这篇文章我写layout的七种布局。

(extjs是4.+版本)

3.Border布局__边界布局

   这中布局是最常用的布局之一,看图

4. 

   

    

  border布局:

border布局也称边界布局,他将页面分隔为west,east,south,north,center这五个部分,我们需要在其items中指定使用region参数为其子元素指定具体位置。

  注意:

north和south部分只能设置高度(height),west和east部分只能设置宽度(width)。

northsouthwesteast区域变大,center区域就变小了。

  参数split:

true可以调整除了center四个区域的大小。

  参数collapsible:

true将激活折叠功能。

  center区域是必须使用的,Center区域会自动填充其他区域的剩余空间。

尤其在Extjs4.0中,当指定布局为border时,如果没有指定center区域时,会出现报错信息。

 

Ext.onReady(function(){

newExt.Viewport({

title:

"Viewport",

layout:

"border",

defaults:

{

bodyStyle:

"background-color:

#FFFFFF;",

frame:

true

},

items:

[

{region:

"west",width:

90,title:

'north',collapsible:

true},

{region:

"east",width:

90,title:

'north',collapsible:

true},

{region:

"north",height:

100,title:

'north',collapsible:

true},

{region:

"center",split:

true,border:

true,collapsible:

true,title:

'center'},

{region:

"south",title:

"south",split:

true,border:

true,collapsible:

true,height:

100},

]

});

});

 

5.Accordion布局__手风琴布局

   accordion布局:

accordion布局也称手风琴布局,在accordion布局下,在任何时间里,只有一个面板处于激活状态。

其中每个面边都支持展开和折叠。

注意:

只有Ext.Panels和所有Ext.panel.Panel子项,才可以使用accordion布局。

Ext.onReady(function(){

varaccordion=Ext.create("Ext.panel.Panel",{

title:

"west",

layout:

"accordion",//设置为手风琴布局

layoutConfig:

{

animate:

true

},

width:

250,

minWidth:

90,

region:

"west",//设置方位

split:

true,

collapsible:

true,

items:

[

{title:

"嵌套面板一",html:

"嵌套面板一",iconCls:

"save"},

{title:

"嵌套面板二",html:

"嵌套面板二",iconCls:

"search"},

{title:

"嵌套面板三",html:

"嵌套面板三",iconCls:

"back"},

{title:

"嵌套面板四",html:

"嵌套面板四",iconCls:

"12"}

]

});

newExt.Viewport({

title:

"Viewport",

layout:

"border",//这里是(border)边界布局

defaults:

{

bodyStyle:

"background-color:

#FFFFFF;",

frame:

true

},

items:

[

accordion,//这里是(accordion)手风琴布局

{region:

"east",width:

90,title:

'north',collapsible:

true},

{region:

"north",height:

100,title:

'north',collapsible:

true},

{region:

"center",split:

true,border:

true,collapsible:

true,title:

'center'},

{region:

"south",title:

"south",split:

true,border:

true,collapsible:

true,height:

100}

]

});

});

6.Card布局__类似向导

   Card布局:

这种布局用来管理多个子组件,并且在任何时刻只能显示一个子组件。

这种布局最常用的情况是向导模式,也就是我们所说的分布提交。

Card布局可以使用layout:

'card'来创建。

  注意:

由于此布局本身不提供分步导航功能,所以需要用户自己开发该功能。

由于只有一个面板处于显示状态,那么在初始时,我们可以使用setActiveItem功能来指定某一个面板的显示。

当要显示下一个面板或者上一个面板的时候,我们可以使用getNext()或getPrev()来得到下一个或上一个面板。

然后使用setDisabled方法来设置面板的显示。

另外,如果面板中显示的是FORM布局,我们在点击下一个面板的时候,处理FORM中提交的元素,通过AJAX将表单中的内容保存到数据库中或者SESSION中。

  下面的示例代码展示了一个基本的Card布局,布局中并没有包含form元素,具体情况,还要根据实际情况进行处理:

//Card布局__类似向导

Ext.application({

name:

'HelloExt',

launch:

function(){

varnavigate=function(panel,direction){

varlayout=panel.getLayout();

layout[direction]();

Ext.getCmp('move-prev').setDisabled(!

layout.getPrev());

Ext.getCmp('move-next').setDisabled(!

layout.getNext());

};

Ext.create('Ext.panel.Panel',{

title:

'Card布局示例',

width:

300,

height:

202,

layout:

'card',

activeItem:

0,

x:

30,

y:

60,

bodyStyle:

'padding:

15px',

defaults:

{border:

false},

bbar:

[{

id:

'move-prev',

text:

'上一步',

handler:

function(btn){

navigate(btn.up("panel"),"prev");

},

disabled:

true

},

'->',

{

id:

'move-next',

text:

'下一步',

handler:

function(btn){

navigate(btn.up("panel"),"next");

}

}],

items:

[{

id:

'card-0',

html:

'

第一步

'

},

{

id:

'card-1',

html:

'

第二步

'

},

{

id:

'card-2',

html:

'

最后一步

'

}],

renderTo:

Ext.getBody()

});

}

});

7.fit布局

 

 在Fit布局中,子元素将自动填满整个父容器。

 注意:

在fit布局下,对其子元素设置宽度是无效的。

如果在fit布局中放置了多个组件,则只会显示第一个子元素。

典型的案例就是当客户要求一个window或panel中放置一个GRID组件,grid组件的大小会随着父容器的大小改变而改变。

//fit布局

Ext.application({

name:

'HelloExt',

launch:

function(){

Ext.create('Ext.container.Viewport',{

layout:

'fit',

width:

'800px',//没有做用的

items:

[

{

title:

'HelloExt',

html:

'Hello!

WelcometoExtJS.'

},

{

title:

'妈咪妈咪哄',

html:

'这个子控件是不会显示的,呜哈哈哈!

'

}

]

});

}

});

8.Anchor布局

  

   anchor布局将使组件固定于父容器的某一个位置,使用anchor布局的子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会根据规定的规则重新渲染位置和大小。

   AnchorLayout布局没有任何的直接配置选项(继承的除外),然而在使用AnchorLayout布局时,其子组件都有一个anchor属性,用来配置此子组件在父容器中所处的位置。

  anchor属性为一组字符串,可以使用百分比或者是-数字来表示。

配置字符串使用空格隔开,例如

  anchor:

'75%25%',表示宽度为父容器的75%,高度为父容器的25%

  anchor:

'-295-300',表示组件相对于父容器右边距为295,相对于父容器的底部位300

  anchor:

'-25010%',混合模式,表示组件党对于如容器右边为250,高度为父容器的10%

//Anchor布局

Ext.application({

name:

'HelloExt',

launch:

function(){

Ext.create('Ext.Panel',{

width:

500,

height:

400,

title:

"Anchor布局",

layout:

'anchor',

x:

60,

y:

80,

renderTo:

Ext.getBody(),

items:

[{

xtype:

'panel',

title:

'75%Widthand25%Height',

anchor:

'75%25%'

},{

xtype:

'panel',

title:

'Offset-300Width&-200Height',

anchor:

'-295-300'

},{

xtype:

'panel',

title:

'MixedOffsetandPercent',

anchor:

'-25010%'

}]

});

}

});

9.Absolute布局

 

  Absolute布局继承Ext.layout.container.Anchor布局方式,并增加了X/Y配置选项对子组件进行定位,Absolute布局的目的是为了扩展布局的属性,使得布局更容易使用。

//Absolute布局

Ext.application({

name:

"HelloExt",

launch:

function(){

Ext.create('Ext.form.Panel',{

title:

'Absolute布局',

width:

300,

height:

275,

x:

200,

y:

90,

layout:

'absolute',

defaultType:

'textfield',

items:

[{

x:

10,

y:

10,

xtype:

'label',

text:

'SendTo:

'

},{

x:

80,

y:

10,

name:

'to',

anchor:

'90%'//控件从居左80px处,拉长到居左90%处

},{

x:

10,

y:

40,

xtype:

'label',

text:

'Subject:

'

},{

x:

80,

y:

40,

name:

'subject',

anchor:

'90%'

},{

x:

0,

y:

80,

xtype:

'textareafield',

name:

'msg',

anchor:

'100%80%'//控件从居左0px处拉长100%,空间从居上80px处,拉长至余下控件高度的80%处

}],

renderTo:

Ext.getBody()

});

}

});

10.Column布局__列布局

 

  Column布局一般被称为列布局,这种布局的目的是为了创建一个多列的格式。

其中每列的宽度,可以为其指定一个百分比或者是一个固定的宽度。

  Column布局没有直接的配置选项(继承的除外),但Column布局支持一个columnWidth属性,在布局过程中,使用columnWidth指定每个面板的宽度。

注意:

使用Column布局布局时,其子面板的所有columnWidth值加起来必须介于0~1之间或者是所占百分比。

他们的总和应该是1。

另外,如果任何子面板没有指定columnWidth值,那么它将占满剩余的空间。

 

Ext.application({

name:

"HelloExt",

launch:

function(){

Ext.create('Ext.panel.Panel',{

title:

'ColumnLayout-按比例',

width:

350,

height:

250,

x:

20,

y:

100,

layout:

'column',

items:

[{

title:

'Column1',

columnWidth:

.25

},{

title:

'Column2',

columnWidth:

.55

},{

title:

'Column3',

columnWidth:

.20

}],

renderTo:

Ext.getBody()

});

}

});

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

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1