`
RandyWei
  • 浏览: 66989 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sencha Touch 1.1培训教程第四章:Sencha Touch布局介绍

 
阅读更多

Sencha Touch 1.1培训教程第四章:Sencha Touch布局介绍


作者:廖 章     编辑整理:刚 子     来自:移动Web开发社区 


在我们的Web应用开发中,页面的排版、布局很重要,用户就是通过页面操作来完成日常工作的。如果界面布局不合理、操作不方便,用户也不会对系统有好的印象、甚至有可能影响一个项目的成败。我自己的经验是,在开发某个功能模块时,除了仔细属性该模块的功能需求和业务需求外,还会在草稿纸上简单的把该功能的布局画出来(如果美工已经制作有页面模型外)。例如: 
该图片为适合页面被自动缩小. 查看大图请点击.
  
Sencha Touch的布局类似Extjs中的布局,常用的有:BoxLayoutHBoxLayoutVBoxLayoutFitLayoutCardLayout 

 


BoxLayout、HBoxLayout、VBoxLayout(箱子布局)


BoxLayout是箱子布局,该布局类似于药店里放置中草药的大柜子里一个个小箱子那样,把组件放置在容器中(Container)中。BoxLayout是HBoxLayout和VBoxLayout这两个布局类的父类,一般很少直接使用。


  • HBoxLayout是水平箱子布局,即把组件横排的放置在容器中。 
      

代码清单: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
var viewport = new Ext.Panel({
            fullscreen: true,
            //width: 500,
            //height: 200,
            margin: '0 0 0 0',
            layout: {
                type: 'hbox', //指定layout布局方式为HBoxLayout
                align: 'stretch' //布局里的‘小容器’拉伸,类似window桌面图片那样,拉伸到整个页面大
            },
            items: [{
                flex: 1, //所占宽度的比率
                //height: 200,
                style: 'border:1px red solid', //自定义样式
                margin: '0 20 0 0', //设置边框距离
                items: [{
                    xtype: 'button',
                    text: '第一',
                    margin: 6
                }]
            },{
                flex: 2,
                //height: 200,
                style: 'border:1px red solid',
                margin: '0 20 0 0',
                html: '<div style="border:1px red dashed;margin:6px;">第二个小箱子</div>'
            },{
                flex: 3,
                //height: 200,
                style: 'border:1px red solid',
                items: [{
                    xtype: 'button',
                    text: '第三',
                    margin: 6
                }]
            }]
 
});

有两个属性需要关注一下: 
1、 align: 'stretch',该属性是设置容器里‘小容器’的对齐方式。 
2、 flex属性是设置‘小容器’的宽度比率,具体的计算方式请参看文档。 当然还有其他的属性,例如:style、margin、padding,这些属性主要是设置样式的。

  •  VBoxLayout垂直箱子布局,即把组件垂直的放置在容器中。  
      
    代码清单: 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    var viewport = new Ext.Panel({
                fullscreen: true,
                //width: 500,
                //height: 200,
                margin: '0 0 0 0',
                layout: {
                    type: 'vbox', //指定layout布局方式为VBoxLayout
                    align: 'stretch' //布局里的‘小容器’拉伸
                },
                items: [{
                    flex: 1, //所占宽度的比率
                    //height: 200,
                    style: 'border:1px red solid',
                    margin: '0 0 10 0',
                    items: [{
                        xtype: 'button',
                        text: '第一',
                        margin: 6
                    }]
                },{
                    flex: 2,
                    //height: 200,
                    style: 'border:1px red solid',
                    margin: '0 0 10 0',
                    html: '<div style="border:1px red dashed;margin:6px;">第二个小箱子</div>'
                },{
                    flex: 3,
                    //height: 200,
                    style: 'border:1px red solid',
                    items: [{
                        xtype: 'button',
                        text: '第三',
                        margin: 6
                    }]
                }]
     
        });


FitLayout(自适应布局) 


FitLayout是布局的基础类,对应面板布局配置项的名称为fit,使用fit布局将使面板子元素自动充满容器,如果在当前容器中存在多个子面板则只有一个会被显示。 
  
代码清单: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var viewport = new Ext.Panel({
            fullscreen: true,
            //width: 500,
            //height: 200,
            margin: '0 0 0 0',
            layout: 'fit', //指定layout布局方式为FitLayout
            items: [{
                style: 'border:1px red solid',
                html: '<div style="border:1px red dashed;margin:6px;">第一个小箱子</div>'
            },{
                style: 'border:1px blue solid',
                html: '<div style="border:1px red dashed;margin:6px;">第二个小箱子</div>'
        }]         
});

CardLayout(卡片式布局) 


CardLayout在sencha touch中是最常用的布局,模仿本地应用的页面转换效果主要通过它来体现出来。它是扩展自FitLayout布局,对应面板布局配置项的名称为card。该布局会包含多个子面板,但任何时候都只有一个子面板处于显示状态,这种布局经常用来制作向导和标签页。

各个字面板之间切换的途径是调用setActiveItem方法,该方法接收一个子面板对象或id、索引作为参数。 
 

代码清单: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
//工具栏-toolbar
var funBar = {
            xtype: 'toolbar',
            title: 'CardLayout例子',
            dock: 'top', //工具栏放置的位置(必须的属性):top-上,bottom-下,left-左,right-右
            scroll: 'horizontal',
            height: 30,
            items: [{
            xtype: 'button',
                text: '桌面',
                ui: 'back',
                //iconMask: true,
                //iconCls: 'home',
                style: btStyle,
                handler: function(){                   
                      window.location = prefix + '/index.action';
                   }
            },{
                xtype: 'button',
                text: '第一个子面板',
                style: btStyle,
                handler: function(){                   
                      changeItem('p1');
                }
            },{
                xtype: 'button',
                text: '第二个子面板',
                style: btStyle,
                handler: function(){                   
                      changeItem('p2');
                   }
            }]
        };
 
        //主界面
        var viewport = new Ext.Panel({
            fullscreen: true,
            margin: '0 0 0 0',
            layout: 'card', //指定layout布局方式为CardLayout
            activeItem: 0,
            dockedItems: [funBar],
            items: [{
                id: 'p1',
            style: 'border:1px red solid',
                html: '<div style="border:1px red dashed;margin:6px;">第一个小箱子</div>'
            },{
                    id: 'p2',
                style: 'border:1px blue solid',
                html: '<div style="border:1px red dashed;margin:6px;">第二个小箱子</div>'
            }]         
        });
 
        //切换子面板
        var changeItem = function(id){
            viewport.setActiveItem(id, 'slide');
};
};

在 2012年01月10日 13:23 被 刚子 最后编辑
 
 

分享到:
评论

相关推荐

    sencha touch 1.1 panel-list分页实现

    自己基本测试了下可用,不过没有放入总条数之类的,长度有限,他的原理就是可以动态修改传递的start 以及 limit,如果有其他参数请在 store里面放入baseParams 参数如: , baseParams : { sort : 'foodprice ...

    touch-docs-2.2.1.zip(senchaTouch 离线API参考文档)

    4. **用户手册**:全面介绍Sencha Touch的架构、工作原理以及最佳实践。 将这个文档部署到Tomcat的webAPP目录下,意味着你可以通过Web服务器访问这些离线文档,无需网络连接,这对于开发者来说非常方便,特别是在...

    Sencha 和 Sencha Touch 简介

    本文通过对 Sencha Touch 框架的介绍,使读者对该框架有一定的了解,并通过一些代码示例给用户更详细直观的对 Sencha Touch 框架功能的了解。 ExtJS ExtJS 是为 web 开发人员提供的基于 JavaScript 和 web 标准快速...

    sencha touch 登陆界面

    Sencha Touch 是一款专为移动设备设计的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,用于构建高性能的触控应用。"sencha touch 登陆界面"这个主题,主要涉及的是如何使用Sencha Touch来设计和实现一...

    移动Web应用开发技术讲解-Sencha Touch 1.1

    移动Web应用,简单来理解就是针对移动终端优化过的Web 站点,终端用户通过支持Html5、Css3、Javascript标准的Webkit内核浏览器访问部署在服务器的Web应用。

    sencha touch项目源码

    7. **样式与布局**:Sencha Touch使用CSS3进行样式控制,项目中可能有自定义的样式文件,如`app.css`,用于定义组件的外观和布局。 8. **模板与渲染**:Sencha Touch支持使用模板(Template)来动态生成HTML,这在...

    Sencha Touch开发的项目《般若人生》源码

    《般若人生》是一款基于Sencha Touch框架开发的移动应用项目。Sencha Touch是一个流行的JavaScript框架,专门用于构建跨平台的触屏友好型Web应用程序。它提供了丰富的UI组件和强大的数据管理工具,使得开发者能够...

    Sencha Touch2环境搭建

    4. **Sencha CMD** - 安装Sencha CMD,它是Sencha Touch开发的核心工具,提供了一系列自动化命令,如创建项目、生成组件、编译代码等。可以通过Sencha官网下载并按照指导进行安装。 接下来,我们将按照以下步骤搭建...

    一个完整的sencha touch 应用案例

    Sencha Touch 是一款专为移动设备设计的前端框架,它提供了丰富的组件库和强大的数据管理功能,用于构建高性能的触控应用。这个压缩包文件包含了创建一个完整的Sencha Touch 应用所需的基本元素,让我们逐一解析这些...

    Sencha Touch 2入门教程之MVC例子程序源代码

    4. **配置文件和结构**:在Sencha Touch 2的MVC实现中,应用通常由app.js文件启动,这个文件会定义应用的基本配置,包括要加载的模型、视图、控制器等。每个MVC组件都有自己的JavaScript文件,如模型文件(model/...

    sencha touch 2.4.0最新版

    3. **响应式布局**:Sencha Touch强调响应式设计,2.4.0版本可能强化了这一特性,让开发者能更容易地适应不同屏幕尺寸和分辨率的设备。 4. **数据绑定**:Sencha Touch提供了一种强大的数据绑定机制,2.4.0可能...

    sencha touch中文翻译文档

    3. **视图(Views)**:介绍各种UI组件,如按钮、列表、面板、表单等,以及如何自定义和布局这些组件以创建用户界面。 4. **控制器(Controllers)**:说明如何通过控制器管理视图之间的交互和事件,实现应用逻辑的...

    sencha touch list demo

    Sencha Touch 是一款专为移动设备设计的前端框架,它提供了丰富的组件库,用于构建高性能的触屏Web应用。在“sencha touch list demo”中,我们主要关注的是Sencha Touch中的列表(List)组件,这是一个核心且常用的...

    senchaTouch和fusioncharts结合的实例

    FusionCharts 提供了一些内置方法来调整图表大小,但可能需要根据Sencha Touch 的布局规则进行额外的样式调整。 6. **事件监听**:FusionCharts 支持多种交互事件,如点击图表、图例等。你可以结合Sencha Touch 的...

    api.zip_sencha _sencha touch api_sencha touch2 api

    4. **命令式和声明式创建**:介绍了如何使用JavaScript代码或XTemplate创建和配置组件。 5. **路由和导航**:Sencha Touch 2支持页面间的导航和URL路由,方便构建复杂的多页面应用。 6. **主题和皮肤**:API文档会...

    sencha touch在VScode上的插件

    4. **调试支持**:可能包含Sencha Touch应用的调试工具,帮助开发者定位和解决问题。 5. **构建集成**:与Sencha Cmd或Webpack等构建工具集成,实现一键编译和打包。 标签中的"sencha touch"和"VScode"进一步确认了...

Global site tag (gtag.js) - Google Analytics