今天我来总结一下extjs下面的各种布局,不仅是为了给自己做笔记,同时,也希望让刚刚接触extjs的朋友们快速的了解下,大神就不用看了。废话不多说,开始布局的讲解。

(以下代码都可以直接在javascript中直接复制使用,希望大家能够较好的使用学习。)

1.auto布局使用(默认布局)  就是自动排版 没有任何的设定  几乎很少使用到

  1. Ext.onReady(function () {
  2. //设置提示消息的显示方式
  3. var panel1 = Ext.create('Ext.panel.Panel', {
  4. title : 'panel1',
  5. html : 'panel1ddd',
  6. height : 80,
  7. width : 100
  8. });
  9. var panel2 = Ext.create('Ext.panel.Panel', {
  10. title : 'panel2',
  11. html : 'panel2ffff',
  12. height : 80,
  13. width : 100
  14. });
  15. var panel3 = Ext.create('Ext.panel.Panel', {
  16. title : 'panel3',
  17. html : 'panel3yyyy',
  18. height : 80,
  19. width : 100
  20. });
  21. var panel4 = Ext.create('Ext.panel.Panel', {
  22. title : 'panel4',
  23. html : 'panel4GGG',
  24. height : 80,
  25. width : 100
  26. });
  27. var auto = Ext.create('Ext.window.Window', {
  28. title : 'auto Layout',
  29. width : 100,
  30. height : 420,
  31. layout : 'auto',
  32. defaults : {
  33. bodyStyle : 'padding:15px'
  34. },
  35. items : [panel1, panel2, panel3, panel4]
  36. });
  37. auto.show();
  38.  
  39. });

效果图:

2 anchor布局(按百分比显示)使用anchor布局的子组件尺寸相对于容器的尺寸,即父容器容器的大小发生变化时,使用anchor布局的组件会根据规定的规则重新渲染位置和大小。多数使用在类似表格的排版中。

  1. var panel5 = Ext.create('Ext.panel.Panel', {
  2. title : 'panel5',
  3. html : '100% 30%',
  4. anchor : '100% 30%'
  5. });
  6. var panel6 = Ext.create('Ext.panel.Panel', {
  7. title : 'panel6',
  8. html : '100% 25%',
  9. anchor : '1000% 25%'
  10. });
  11.  
  12. var panel7 = Ext.create('Ext.panel.Panel', {
  13. title : 'panel7',
  14. html : '100% 15%',
  15. anchor : '100% 15%'
  16. });
  17.  
  18. var panel8 = Ext.create('Ext.panel.Panel', {
  19. title : 'panel8',
  20. html : '100% 30%',
  21. anchor : '100% 30%'
  22. });
  23.  
  24. var anchor = Ext.create('Ext.window.Window', {
  25. title : 'Anchor Layout',
  26. width : 250,
  27. height : 300,
  28. layout : 'anchor',
  29. defaults : {
  30. bodyStyle : 'padding:10px'
  31. },
  32. items : [panel5, panel6, panel7, panel8]
  33. });
  34. anchor.show();

  

效果图: 

 3 HBox 布局(水平)

首先的熟悉下一下几个主要属性:

一、align:字符类型,指示组件在容器内的对齐方式。有如下几种属性。

1、top(默认):排列于容器顶端。

2、middle:垂直居中排列于容器中。

3、stretch:垂直排列且拉伸义填补容器高度

4、stretchmax:垂直拉伸,并且组件以最高高度的组件为准。

二、flex:数字类型,指示组件在容器中水平呈现方式,通俗的讲,就是指示组件在容器中的相对宽度。

三、pack : 字符类型,指示组件在容器的位置,有如下几种属性。

1、start(默认):组件在容器左边

2、center:组件在容器中间

3、end:组件在容器的右边

  1. Ext.onReady(function(){
  2. var d1 = Ext.create('Ext.Panel',{
  3. title:'HBox 顶对齐,且组件在容器的左边',
  4. frame:true,
  5. width:600,
  6. height:100,
  7. items:[{
  8. anchor:'100%',
  9. layout: {
  10. type:'hbox',
  11. padding:'10',
  12. pack:'start',
  13. align:'top'
  14. },
  15. defaults:{margins:'0 5 0 0'},
  16. items:[{
  17. xtype:'button',
  18. text: 'Button 1'
  19. },{
  20. xtype:'button',
  21. text: 'Button 2'
  22. },{
  23. xtype:'button',
  24. text: 'Button 3'
  25. },{
  26. xtype:'button',
  27. text: 'Button 4'
  28. }]
  29. }]
  30. })
  31.  
  32. d1.render('d1');
  33. var d2 = Ext.create('Ext.Panel',{
  34. title:'HBox 垂直对齐,且组件在容器的右边',
  35. frame:true,
  36. width:600,
  37. height:100,
  38. items:[{
  39. anchor:'100%',
  40. layout: {
  41. type:'hbox',
  42. padding:'10',
  43. align:'middle',
  44. pack:'end'
  45. },
  46. defaults:{margins:'0 5 0 0'},
  47. items:[{
  48. xtype:'button',
  49. text: 'Button 1'
  50. },{
  51. xtype:'button',
  52. text: 'Button 2'
  53. },{
  54. xtype:'button',
  55. text: 'Button 3'
  56. },{
  57. xtype:'button',
  58. text: 'Button 4'
  59. }]
  60. }]
  61. })
  62.  
  63. d2.render('d2');
  64. var d3 = Ext.create('Ext.Panel',{
  65. title:'HBox 垂直水平居中,并且所有控件高度为最高控件的高度',
  66. frame:true,
  67. width:600,
  68. height:100,
  69. items:[{
  70. anchor:'100%',
  71.  
  72. layout: {
  73. type: 'hbox',
  74. padding:'5',
  75. align:'stretchmax',
  76. pack:'center'
  77. },
  78. defaults:{margins:'0 5 0 0'},
  79. items:[{
  80. xtype:'button',
  81. text: 'Small Size'
  82. },{
  83. xtype:'button',
  84. scale: 'medium',
  85. text: 'Medium Size'
  86. },{
  87. xtype:'button',
  88. scale: 'large',
  89. text: 'Large Size'
  90. }]
  91. }]
  92. })
  93.  
  94. d3.render('d3');
  95. })

效果图:

4. VBox布局(垂直)   使用的不多,就简单介绍下  代码如下

  1. var p1 = Ext.create('Ext.panel.Panel', {
  2. title : 'p1',
  3. html : 'p1',
  4. flex : 2
  5. });
  6.  
  7. var p2 = Ext.create('Ext.panel.Panel', {
  8. title : 'p2',
  9. html : 'p2',
  10. flex : 1
  11. });
  12. var vbox = Ext.create('Ext.window.Window', {
  13. title : 'VBox Layout',
  14. width : 82,
  15. height : 300,
  16. layout : {
  17. type : 'vbox',
  18. align : 'stretch'
  19. },
  20. defaults : {
  21. bodyStyle : 'padding:15px'
  22. },
  23. items : [p1, p2]
  24. });
  25. vbox.show();

5.accordion(折叠布局)  主要实现为手风琴效果,可与树做搭配使用形成可伸缩的菜单

  1. var pa1 = Ext.create('Ext.panel.Panel', {
  2. title : 'pa1',
  3. html : '<b>pa1</b>'
  4. });
  5. var pa2 = Ext.create('Ext.panel.Panel', {
  6. title : 'pa1',
  7. html : '<b>pa2</b>'
  8. });
  9. var pa3 = Ext.create('Ext.panel.Panel', {
  10. title : 'pa3',
  11. html : '<b>pa3</b>'
  12. });
  13. var pa4 = Ext.create('Ext.panel.Panel', {
  14. title : 'pa4',
  15. html : '<b>pa4</b>'
  16. });
  17. var pa5 = Ext.create('Ext.panel.Panel', {
  18. title : 'pa5',
  19. html : '<b>pa5</b>'
  20. });
  21.  
  22. var accordion = Ext.create('Ext.window.Window', {
  23. title : 'Accordion Layout',
  24. margins : '5 0 5 5',
  25. split : true,
  26. width : 210,
  27. height : 250,
  28. layout : 'accordion',
  29. defaults : {
  30. bodyStyle : 'padding:35 15 0 50'
  31. },
  32. items : [pa1, pa2, pa3, pa4, pa5]
  33. });
  34. accordion.show();

效果图:

6. fit布局(显示一个单独的组件在一容器上,填满容器空间)

  1. var pan1 = Ext.create('Ext.panel.Panel', {
  2. title : 'pan1',
  3. bodyStyle : 'padding:15px',
  4. html : 'Fit content'
  5. });
  6. var fit = Ext.create('Ext.window.Window', {
  7. title : 'fit layout',
  8. width : 100,
  9. height : 150,
  10. layout : 'fit',
  11. items : [pan1]
  12. });
  13. fit.show();

 7.border布局   在extjs中最常用的布局方式  该布局把容器分成东南西北中五个区域,分别由east,south, west,north, cente来表示,在往容器中添加子元素的时候,我们只需要指定这些子元素所在的位置,Border布局会自动把子元素放到布局指定的位置。而主体部分就是center,他会自动填充页面没有填满的地方.

  1. var border = Ext.create('Ext.window.Window', {
  2. width : 700,
  3. height : 400,
  4. title : 'Border Layout',
  5. layout : 'border',
  6. defaults : {
  7. xtype : 'panel'
  8. },
  9. items : [{
  10. title : 'North Region is resizable',
  11. region : 'north',
  12. height : 100,
  13. split : true
  14. }, {
  15. title : 'South Region is resizable',
  16. region : 'south',
  17. height : 100,
  18. split : true
  19. }, {
  20. title : 'West Region is collapsible',
  21. region : 'west',
  22. width : 200,
  23. collapsible : true,
  24. layout : 'fit'
  25. }, {
  26. title : 'East Region is collapsible',
  27. region : 'east',
  28. width : 200,
  29. collapsible : true,
  30. layout : 'fit'
  31. }, {
  32. title : 'Center Region',
  33. region : 'center',
  34. layout : 'fit'
  35. }]
  36. });
  37. border.show();

效果图:

8.card布局方式,可以用来做window的操作切换form界面。该布局会包含多个子面板,任何时候都只有一个子面板处于显示状态,这种布局类经常用来制作向导和标签页。该布局的重点方式是setActiveItem,因为一次只能显示一个子面板,所以切换子面板的唯一途径就是调用setActiveItem方法,它接受一个子面板id或索引作为参数。CardLayout布局并没有提供一个子面板的导航机制,导航逻辑需要开发人员自己实现。

  1. Ext.onReady(function(){
  2. var panel = new Ext.Panel({
  3. layout : 'card',
  4. activeItem : 0, //设置默认显示第一个子面板
  5. title:'Ext.layout.CardLayout布局示例',
  6. frame:true, //渲染面板
  7. height : 250,
  8. width : 350,
  9. renderTo: Ext.getBody(),
  10. defaults : { //设置默认属性
  11. bodyStyle:'background-color:#FFFFFF;padding:15px' //设置面板体的背景色
  12. },
  13. items: [
  14. {
  15. xtype:"panel",
  16. title : '嵌套面板一',
  17. html : '说明一',
  18. id : 'p1',
  19. items:[
  20. {
  21. xtype: 'textfield',
  22. fieldLabel: '申请标题',
  23. name: 'titleApplyInfo',
  24. width:200,
  25. allowBlank:false,
  26. minValue: 0,
  27. nanText:'输入格式错误',
  28. }]
  29. },
  30. {
  31. title : '嵌套面板二',
  32. html : '说明二',
  33. id : 'p2',
  34. items:[
  35. {
  36. xtype: 'textfield',
  37. fieldLabel: '文章内容',
  38. name: 'titleApplyInfo',
  39. width:200,
  40. allowBlank:false,
  41. minValue: 0,
  42. nanText:'输入格式错误',
  43. }]
  44. }
  45. ],
  46. buttons:[
  47. {
  48. text : '切换',
  49. handler : changePage
  50. }
  51. ]
  52. })
  53. //切换子面板
  54. function changePage(btn){
  55. var index = Number(panel.layout.activeItem.id.substring(1));
  56. if(index == 1){index = 2;}
  57. else{index = 1;}
  58. panel.layout.setActiveItem('p'+index);
  59. }
  60. });

Extjs布局的更多相关文章

  1. ExtJs布局详解

    序言 1.百度百科上说:ExtJs功能丰富,无人能出其右.无论是界面之美,还是功能之强,extjs都高居榜首. 2.呵呵,界面之美当是少不了布局的,这篇文章我写layout的七种布局.(extjs是4 ...

  2. ExtJS布局方式(layout)图文详解

    Auto默认布局 不给下级组件指定大小和位置 Absolute绝对布局 可使用坐标(x.y)进行布局 Accordion手风琴布局 实现Accordion效果的布局,也可叫可折叠布局.也就是说使用该布 ...

  3. ExtJs布局之tabPanel

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  4. ExtJs布局之viewport

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  5. ExtJs布局之BOX

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  6. ExtJs布局之border

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  7. ExtJs布局之table

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  8. ExtJs布局之Column

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

  9. ExtJs布局之Card

    <!DOCTYPE html> <html> <head> <title>ExtJs</title> <meta http-equiv ...

随机推荐

  1. MyEclipse8.5 以debug模式启动tomcat6.0服务器 报错cannot connect to vm。

    打开MyEclipse8.5 想以debug模式启动tomcat6.0服务器,报  a configuration error occurred during startup.please verif ...

  2. Cadstar格式导入功能

    Cadstar格式导入功能   Skip to end of metadata   Attachments:4 Added by Wenlong Hua, last edited by Wenlong ...

  3. 转: svn合并分支到trunk

    http://sepcot.com/blog/2007/04/svn-merge-branch-trunk SVN: Merging a Branch into Trunk   This is mor ...

  4. Apache Commons Codec 编码解码

    Apache Commons Codec jar包官方下载地址 下载解压后把commons-codec-1.9.jar 放到lib中 关于SHA1算法的介绍可以参看Wiki:http://en.wik ...

  5. 探讨mvc下linq多表查询使用viewModel的问题

    最近在开发mvc3的时候发现了一个问题,就是如何在view页面显示多表查询的数据,最简单的办法就是使用viewmodel了,以下本人使用viewmodel来实现多表查询的3中方法, 先贴代码再说: 1 ...

  6. Linux centos关机与重启命令详解与实战

    Linux centos重启命令: 1.reboot 2.shutdown -r now 立刻重启(root用户使用) 3.shutdown -r 10 过10分钟自动重启(root用户使用) 4.s ...

  7. [LeetCode]题解(python):110 Balanced Binary Tree

    题目来源 https://leetcode.com/problems/balanced-binary-tree/ Given a binary tree, determine if it is hei ...

  8. NavigationController popToViewController跳转之前任意ViewController方法

    NSArray *viewControllers = self.navigationController.viewControllers;A *viewController = [viewContro ...

  9. iOS:如何将自己的SDK用CocoaPods管理

    条件:  需要在终端上将工程发布到cocoapods上,这样才能用cocoapods进行管理. 步骤: 首先,你得有一个pod的账号 在终端中输入pod 可以查看关于pod 的命令帮助,输入pod t ...

  10. JavaScript:日期选择器组件的使用

    前言: 在实际项目开发中,日期选择是一个十分常见而且重要的问题,在表单中设计到日期的验证时,如果让用户自己输入时间的话,那么使用正则进行验证其正确性是不可取的,因为他一般只能验证日期的格式,无法准确的 ...