读书人

ExtJS学习札记 layout的9种样式风格总

发布时间: 2012-08-30 09:55:54 作者: rapoo

ExtJS学习笔记 layout的9种样式风格总结

extjs的容器组件都可以设置它的显示风格,它的有效值有 absolute, accordion, anchor, border, card, column, fit, form and table. 一共9种。简单总结一下,帮助记忆。
[list]absolute顾名思义,在容器内部,根据指定的坐标定位显示
accordion这个是最容易记的,手风琴效果
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.OnReady(function(){
  2. var panel=new Ext.Panel(//Ext.formPanel就是Panel中用了form布局
  3. {
  4. renderTo:'paneldiv',
  5. title:'容器组件',
  6. layout:'accordion',
  7. width:500,
  8. height:200,
  9. layoutConfig:{animate:false},
  10. items:[
  11. {title:'元素1',html:''},
  12. {title:'元素2',html:''},
  13. {title:'元素3',html:''},
  14. {title:'元素4',html:''}
  15. ]
  16. }
  17. );
  18. });

anchor这个效果具体还不知道有什么用,就是知道注意一下
1.容器内的组件要么指定宽度,要么在anchor中同时指定高/宽,
2.anchor值通常只能为负值(指非百分比值),正值没有意义,
3.anchor必须为字符串值
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function() {
  2. var panel1 = new Ext.Panel({
  3. title: "panel1",
  4. height: 100,
  5. anchor: '-50',
  6. html: "高度等于100,宽度=容器宽度-50"
  7. });
  8. var panel2 = new Ext.Panel({
  9. title: "panel2",
  10. height: 100,
  11. anchor: '50%',
  12. html: "高度等于100,宽度=容器宽度的50%"
  13. });
  14. var panel3 = new Ext.Panel({
  15. title: "panel3",
  16. anchor: '-10, -250',
  17. html: "宽度=容器宽度-10,高度=容器宽度-250"
  18. });
  19. var win = new Ext.Window({
  20. title: "Anchor Layout",
  21. height: 400,
  22. width: 400,
  23. plain: true,
  24. layout: 'anchor',
  25. items: [panel1, panel2,panel3]
  26. });
  27. win.show();
  28. });

border将容器分为五个区域:east,south,west,north,center
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function() {
  2. var button = Ext.get('show-btn');
  3. var win;
  4. button.on('click', function() {
  5. //创建TabPanel
  6. var tabs = new Ext.TabPanel({
  7. region: 'center', //border布局,将页面分成东,南,西,北,中五部分,这里表示TabPanel放在中间
  8. margins: '3 3 3 0',
  9. activeTab: 0,
  10. defaults: {
  11. autoScroll: true
  12. },
  13. items: [{
  14. title: 'Bogus Tab',
  15. html: "第一个Tab的内容."
  16. }, {
  17. title: 'Another Tab',
  18. html: "我是另一个Tab"
  19. }, {
  20. title: 'Closable Tab',
  21. html: "这是一个可以关闭的Tab",
  22. closable: true
  23. }]
  24. });
  25. //定义一个Panel
  26. var nav = new Ext.Panel({
  27. title: 'Navigation',
  28. region: 'west', //放在西边,即左侧
  29. split: true,
  30. width: 200,
  31. collapsible: true, //允许伸缩
  32. margins: '3 0 3 3',
  33. cmargins: '3 3 3 3'
  34. });
  35. //如果窗口第一次被打开时才创建
  36. if (!win) {
  37. win = new Ext.Window({
  38. title: 'Layout Window',
  39. closable: true,
  40. width: 600,
  41. height: 350,
  42. border : false,
  43. plain: true,
  44. layout: 'border',
  45. closeAction:'hide',
  46. items: [nav, tabs]//把上面创建的panel和TabPanel放在window中,并采用border方式布局
  47. });
  48. }
  49. win.show(button);
  50. });
  51. });

card像安装向导一样,一张一张显示
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function() {
  2. var i = 0;
  3. var navHandler = function(direction) {
  4. if (direction == -1) {
  5. i--;
  6. if (i < 0) { i = 0; }
  7. }
  8. if (direction == 1) {
  9. i++;
  10. if (i > 2) { i = 2; return false; }
  11. }
  12. var btnNext = Ext.get("move-next").dom.document.getElementsByTagName("button")[1];
  13. var btnBack = Ext.get("move-next").dom.document.getElementsByTagName("button")[0];
  14. if (i == 0) {
  15. btnBack.disabled = true;
  16. }
  17. else {
  18. btnBack.disabled = false;
  19. }
  20. if (i == 2) {
  21. btnNext.value = "完成";
  22. btnNext.disabled = true;
  23. }
  24. else {
  25. btnNext.value = "下一步";
  26. btnNext.disabled = false;
  27. }
  28. card.getLayout().setActiveItem(i);
  29. };
  30. var card = new Ext.Panel({
  31. width: 200,
  32. height: 200,
  33. title: '注册向导',
  34. layout: 'card',
  35. activeItem: 0, // make sure the active item is set on the container config!
  36. bodyStyle: 'padding:15px',
  37. defaults: {
  38. border: false
  39. },
  40. bbar: [
  41. {
  42. id: 'move-prev',
  43. text: '上一步',
  44. handler: navHandler.createDelegate(this, [-1])
  45. },
  46. '->',
  47. {
  48. id: 'move-next',
  49. text: '下一步',
  50. handler: navHandler.createDelegate(this, [1])
  51. }
  52. ],
  53. items: [{
  54. id: 'card-0',
  55. html: '<h1>欢迎来到注册向导!</h1><p>Step 1 of 3</p>'
  56. }, {
  57. id: 'card-1',
  58. html: '<h1>请填写注册资料!</h1><p>Step 2 of 3</p>'
  59. }, {
  60. id: 'card-2',
  61. html: '<h1>注册成功!</h1><p>Step 3 of 3 - Complete</p>'
  62. }],
  63. renderTo: "container"
  64. });
  65. });

column把整个容器看成一列,然后向容器放入子元素时
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function() {
  2. var win = new Ext.Window({
  3. title: "Column Layout",
  4. height: 300,
  5. width: 400,
  6. plain: true,
  7. layout: 'column',
  8. items: [{
  9. title:"width=50%",
  10. columnWidth:0.5,
  11. html:"width=(容器宽度-容器内其它组件固定宽度)*50%",
  12. height:200
  13. },
  14. {
  15. title:"width=250px",
  16. width: 200,
  17. height:100,
  18. html:"固定宽度为250px"
  19. }
  20. ]
  21. });
  22. win.show();
  23. });

fit一个子元素将充满整个容器(如果多个子元素则只有一个元素充满整个容器)
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.OnReady(function(){
  2. var panel=new Ext.Panel(
  3. {
  4. renderTo:'paneldiv',
  5. title:'容器组件',
  6. layout:'fit',
  7. width:500,
  8. height:100,
  9. items:[
  10. {title:'子元素1'},
  11. {title:'子元素2'},
  12. {title:'子元素3'},
  13. {title:'子元素4'},
  14. {title:'子元素5'}
  15. ]
  16. }
  17. );
  18. });
form是一种专门用于管理表单中输入字段的布局
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function() {
  2. var win = new Ext.Window({
  3. title: "form Layout",
  4. height: 150,
  5. width: 230,
  6. plain: true,
  7. bodyStyle: 'padding:15px',
  8. items:
  9. {
  10. xtype: "form",
  11. labelWidth: 30,
  12. defaultType: "textfield",
  13. frame:true,
  14. items:
  15. [
  16. {
  17. fieldLabel:"姓名",
  18. name:"username",
  19. allowBlank:false
  20. },
  21. {
  22. fieldLabel:"呢称",
  23. name:"nickname"
  24. },
  25. {
  26. fieldLabel: "生日",
  27. xtype:'datefield',
  28. name: "birthday",
  29. width:127
  30. }
  31. ]
  32. }
  33. });
  34. win.show();
  35. });

table按照普通表格的方法布局子元素,用layoutConfig:{columns:3},//将父容器分成3列
Java代码 ExtJS学习札记 layout的9种样式风格总结
  1. Ext.onReady(function(){
  2. var panel=new Ext.Panel(
  3. {
  4. renderTo:'paneldiv',
  5. title:'容器组件',
  6. layout:'table',
  7. width:500,
  8. height:200,
  9. layoutConfig:{columns:3},//将父容器分成3列
  10. items:[
  11. {title:'元素1',html:'ssssssssss',rowspan:2,height:100},
  12. {title:'元素2',html:'dfffsddsdfsdf',colspan:2},
  13. {title:'元素3',html:'sdfsdfsdf'},
  14. {title:'元素4',html:''}
  15. ]
  16. }
  17. );
  18. });

1楼Tender00111小时前
from:http://virgoooos.iteye.com/blog/288924

读书人网 >JavaScript

热点推荐