谈谈Ext JS的组件——布局的使用方法续一

盒子布局

盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域。这也是比较常有的布局方式。

使用盒子布局,除了要在容器定义layout配置项外,还需要在子组件指定子组件的宽度(HBox)或高度(VBox)。指定宽度或高度有两种方
式,一是直接使用width或height来定义,一是使用flex配置项,根据比例来划分。下面通过一些示例来了解一下盒子布局的使用,这里只使用水平
盒子作为示例,垂直盒子就不演示了。

在页面运行以下代码创建一个400×200的容器,然后使用水平盒子布局加入三个大小分别为50×50、100×100和150×150的面板:

Ext.create(‘Ext.container.Container‘,{
    renderTo: Ext.getBody(),
    width:400,
    height:200,
    border: 5,
    style:{
        borderColor:‘yellow‘,
        borderStyle: ‘solid‘
    },
    layout:{
        type:‘hbox‘
    },
    defaults:{
        bodyStyle:{
            borderColor: ‘red‘
        }
    },
    items:[
        {html:‘50×50‘, width:50, height:50},
        {html: ‘100×100‘, width:100, height:100},
        {html: ‘150×150‘, width:150, height:150}
    ]
});1234567891011121314151617181920212223

为了加强演示效果,特意将容器的边框设置为5像素,且以***实线显示,而面板的边框也使用红色实线来显示,最终的显示效果如下:

从效果图中可以看到,由于子组件的总宽度不能填满容器的宽度,
因而留了很大一块空白,要预防这种情况,就要使用flex配置项,例如,将150×150的面板的“width:150”修改为“flex:1”就可以让
子组件填满余下的空白了。修改后的宽度计算规则是先用容器的宽度减去所有固定宽度的子组件的总宽度,再把余下的宽度根据flex设置的比例分配,由于这里
只有一个flex,因而会把全部余下宽度全部分配给150×150的面板。

如果不清楚该设置多少宽度给子组件,最好的方式就是使用flex,通过比例划分的方式来分配宽度。比例划分的计算规则是,先把所以子组件的flex
配置项相加作为分母,把各子组件的flex设置作为分子,计算出比例后再乘于容器的宽度就是子组件的宽度。例如,将示例中的三个子组件的flex依次设置
为1、2、4,那各子组件的宽度将依次为总宽度的1/7、2/7和4/7。使用除法,不可避免的要对计算值进行取整,这样,取整后的总宽度就有可能不是容
器的总宽度,因而,在最后都会调整最后一个子组件的宽度以便所有子组件的宽度等于总宽度。

在效果图中,你会发现如果各个子面板的高度都不同,就会出现这种不太美观的效果,当然,有时候可能需要这种效果,但总的来说还是高度统一为容器的高度较美观。如果要让高度统一为容器高度,可以在layout的配置对象内将align配置项定义为stretch,代码如下:

layout:{    type:‘hbox‘,
    align:‘stretch‘},1234

对于align配置项来说,还有其他对齐方式可选:

  • begin:如果是水平盒子布局,则是顶部对齐,如果是垂直盒子布局,则左对齐。
  • middle:如果是水平盒子布局,则是垂直居中对齐,如果是垂直盒子布局,则是水平居中对齐。
  • end:如果是水平盒子布局,则是底部对齐,如果是垂直盒子布局,则是右对齐。
  • stretchmax:如果是水平盒子布局,则对齐高度最高的那个子组件,如果是垂直盒子布局,则对齐宽度最宽的那个子组件。

拆分条

在盒子布局中也是可以使用拆分条的,不过它使用的组件与边框布局不同,它使用的是Ext.resizer.Splitter组件。要在盒子布局设置
拆分条,与边框布局的用法是一样的。要注意的是,水平盒子布局的拆分条是固定绑定在子组件的左边的,而垂直盒子布局的拆分条是固定绑定在组件的顶部的,总
的来说,无论是水平盒子布局还是垂直盒子布局,在第一个子组件设置拆分条是没有效果的。

装箱

如果确实需要效果图中的效果,但希望所有子组件居中显示,可以在layout的配置对象中将pack配置项设置为center,代码如下:

layout:{    type:‘hbox‘,
    pack: ‘center‘},1234

这样,效果图中的三个子组件就会水平居中显示了。如果要右对齐(水平盒子布局)或底部对齐(垂直盒子布局),可将pack的值设置为end。pack的默认值为start,也就是效果图中的效果。

自适应布局(Ext.layout.container.Fit)

自适应布局就是把子组件的尺寸设置为容器的尺寸,完全填满容器的可视空间,这是一种常有比较,也比较简单,只要把layout的类型设置为fit就行了。

一般情况下,只有在容器只有一个子组件的情况下才适合使用自适应布局,不然,当有多个子组件时,就会每一个子组件都会和容器的尺寸一样,显示就会出问题。这时候,应该使用盒子布局或者卡片布局。

卡片布局(Ext.layout.container.Card)

卡片布局与自适应布局一样,都会把子组件的尺寸设置未容器的尺寸,不同之处在于,它可以拥有多个子组件,但每次只显示其中一个。为了能对子组件进行
切换,特意在布局中添加了getNext、getPrev、next、prev和setActiveItem等方法。要调用这些方法,需要先调用容器的
getLayout方法返回布局对象,再调用它的方法。

居中布局(Ext.layout.container.Center)

居中布局很简单,就是把子组件全部居中显示。与盒子布局一样,它也是使用绝对定位的方式来实现子组件居中显示的。居中布局典型的应用是显示图片预览
时,在容器内居中显示图片组件。与自适应布局一样,容器内一般都是只有一个子组件。如果容器内有多个子组件,所以子组件都会居中显示,不过显示是层叠式
的,如下图:

上图的效果只是把上面示例中的布局修改未居中布局,把尺寸大的子组件作为第一个子组件,把尺寸最小的子组件作为最后一个子组件。从图中的效果可以看到,居中布局会依子组件的定义次序来层叠子组件,也就是最后一个渲染的子组件会显示在最前面。

未完待续……


请大家尊重作者的辛勤劳动,未经允许,请不要转载本文,毕竟读者的支持是作者撰写文章的动力。



谈谈Ext JS的组件——布局的使用方法续一

时间: 2024-10-29 19:09:38

谈谈Ext JS的组件——布局的使用方法续一的相关文章

谈谈Ext JS的组件——布局的使用方法续二

绝对布局(Ext.layout.container.Absolute) 绝对布局让我回想到了使用Foxpro开发的时候,哪时候的界面布局就是这样,通过设置控件的左上角坐标(x,y)和宽度来进行的,因为输入控件的 高度基本是固定的,所以不需要设置.在可视化编程没有出现之前,开发界面算是个苦差事,因为布局是需要花费不少功夫的,例如想要在已经定义好的组件中插入 一个组件,那就得重新修改插入位置以下的组件的坐标,这工作是比较枯燥无聊的,因而,在没必要的情况下,还是少选择这种布局模式. 绝对布局是使用CS

谈谈Ext JS的组件——布局的使用方法

概述 在Ext JS中,包含两类布局:组件类布局和容器类布局.由于有些组件是有不同的组件组合而成的,如字段就由标题和输入框构成,他们之间也是存在布局关系的,而这就需要组件类布局来处理组件内自己特有的布局关系.如果我们不定义自己的组件,基本不需要使用到组件布局,知道就行了.本文主要介绍的是容器类布局,因为这个在开发中是必定会使用到的. 注意:在Ext JS中,字段有两层意思.在模型中所说的字段,与数据库中的字段的意义是一样.字段的第二层意思是指表单中的输入组件,这个大家要注意区分. 自动布局:Ex

谈谈Ext JS的组件——布局的用法续一

盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比較常有的布局方式. 使用盒子布局,除了要在容器定义layout配置项外,还须要在子组件指定子组件的宽度(HBox)或高度(VBox).指定宽度或高度有两种方式.一是直接使用width或height来定义,一是使用flex配置项,依据比例来划分.以下通过一些演示样例来了解一下盒子布局的使用,这里仅仅使用水平盒子作为演示样例,

谈谈Ext JS的组件——组件基类:Ext.Component

概述 Ext.Component是所有Ext组件的基类,这在Ext.Component的API中第一句话就提到了.然后第二段说明了它包含的基本功能:隐藏/显示.启用/禁用以及尺寸控制等.除了以上这些基本功能,其实还包含了很多东西.当然,在API中不可能面面俱到,那么,我们应当如何去理解这个组件基类呢? Ext.Component===DIV 如果将一个Ext.Component渲染到页面,会看到该组件会简单的在页面中添加一个DIV标记,就是这么简单.也就是说,Ext.Component就相当于一

谈谈Ext JS的组件——容器与布局

概述 在页面中,比較棘手的地方就是布局.而要实现布局.就得有能维护布局的容器. 能够说,在我试过和使用过的Javascript框架中,Ext JS的布局是做得最优秀的一个,而这得益于它强大的容器类和丰富的布局类.在本文将介绍Ext JS的容器组合和布局类. 容器:Ext.container.Container 容器的主要功能是管理其内部的组件.因而在继承Ext.Component的所有功能的基础上.加入了相应的用来处理内部组件的方法add.insert.remove和removeAll. 在配置

谈谈Ext JS组件之引子

Ext JS组件,对于Ext JS开发人员来说,应当不会陌生,毕竟做开发,都必须与它打交道.对于这样一个大家都熟悉的东西,为什么要用一个专题的形式来写呢?是否有这方面的需要?还不如去写点使用技巧? 确实,组件是可能是大家相当熟悉的东西了,但是,在使用中,大家是否在使用组件过程中或多或少都碰到一些臭虫或其他问题,从而花费不少力气去解决这 些问题呢?是什么原因造成这些问题,又该遵循什么思路去解决这些问题呢?本系列的文章就是来解决这些问题的.总的来说,就是希望大家能从文章中了解组件的 设计思路,并能从

下载Ext JS 5.1 gpl版本的方法

先进入官网:http://www.sencha.com 然后在导航的Products中选择Sencha Ext JS,会看到以下页面: 这时候不要单击Download按钮,而是要单击导航中的DETAILS,页面切换后,就可在底部看到GPL版本的下载按钮了,如下图: 单击Download按钮进去后就可下载GPL版本了.

Ext JS 6学习文档-第3章-基础组件

基础组件 在本章中,你将学习到一些 Ext JS 基础组件的使用.同时我们会结合所学创建一个小项目.这一章我们将学习以下知识点: 熟悉基本的组件 – 按钮,文本框,日期选择器等等 表单字段的校验 菜单和工具栏 设计一个表单 计算器程序– 本章的示例项目 转载请注明出处:http://www.jeeboot.com/archives/1219.html 本章的主要目的是创建一个表单设计和一个计算器示例项目.以下图分别展示了表单设计和计算器设计. 首先,你观察下列表单设计,你会发现我们使用了大量的控

【翻译】Ext JS——高效的编码风格指南

原文:ExtJS - Efficient coding style guide 作者:Raja 切勿使用"new"关键字:在Ext JS中,使用"new"关键字来创建一个组件或类的实例是一种错误的做法,因为这没有遵循组件的生命周期.应该使用Ext.create方法来创建对象,例如: 错误: var obj = new Ext.panel.Panel(); 正确: var obj = Ext.create('Ext.panel.Panel'); 初始化直接量:不要直接