日期:2014-05-16  浏览次数:20369 次

ExtJS 4.2 教程-08:布局系统详解
ExtJS 4.2 系列教程导航目录:
  • ExtJS 4.2 教程-01:Hello ExtJS
  • ExtJS 4.2 教程-02:bootstrap.js 工作方式
  • ExtJS 4.2 教程-03:使用Ext.define自定义类
  • ExtJS 4.2 教程-04:数据模型
  • ExtJS 4.2 教程-05:客户端代理(proxy)
  • ExtJS 4.2 教程-06:服务器代理(proxy)
  • ExtJS 4.2 教程-07:Ext.Direct
  • ExtJS 4.2 教程-08:布局系统详解

更多的ExtJS教程,点击进入>>《ExtJS 教程目录》,持续更新中……

今天我们来对ExtJS 4.2 的布局(Layout)进行一次系统的学习。在ExtJS 4.2中,提供了十几种布局,我们可以在api中看到:

image

在这些布局中,我们常用的有Accordion、Border、Column、Fit、Form等。下面我们来看一下具体的用法。

Auto Layout

image

Auto Layout 是ExtJS 容器的默认布局,当我们定义一个panel的时候,如果没有指定panel的布局,那么它就会使用Auto Layout来组织子元素。

Auto Layout 的用法(查看在线演示):

var panel = Ext.create("Ext.panel.Panel", {
    title: "Auto Layout",
    width: 500,
    height: 400,
    items: [
        { xtype: "panel", title: "第一个子Panel", width: 200, height: 100 },
        { xtype: "panel", title: "第二个子Panel", width: 150, height: 100 },
        { xtype: "textfield", width: 300, fieldLabel: "请输入用户名" }
    ],
    renderTo: "container"
});

Auto Layout 本身不包含任何特殊的布局功能,它只是提供了一种调用子元素布局系统的通道。

Anchor Layout

image

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

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

Anchor属性为一组字符串,可以使用百分比或者是-数字来表示。配置字符串使用空格隔开,例如:

  • anchor:'75% 25%',表示宽度为父容器的75%,高度为父容器的25%
  • anchor:'-295 -300',表示组件相对于父容器右边距为295,相对于父容器的底部位300
  • anchor:'-250 10%',混合模式,表示组件党对于如容器右边为250,高度为父容器的10%

Anchor Layout 用法(查看在线演示):

var panel = Ext.create("Ext.panel.Panel", {
    width: 500,
    height: 400,
    title: "Anchor布局",
    layout: