在ExtJS里,布局形态用layout, 用法如下:
{ xtype:'容器控件', layout:'布局类型', items:[ { xtype:'子控件1' }, { xtype:'子控件2' } ] }
上述代码翻译成人话就是:
让某个容器控件里的 子元素 按照 XX类型的方式 布局
注意:
layout属性,仅影响自己的孩子辈,就是说 如果有祖孙三代,爷爷设置了layout属性,父辈会受布局影响,而如果父辈容器没设置layout,孙子元素也不会受爷爷辈的layout属性影响(不理解就去看demo3 )
Demo1 横向布局
想让某个container里的元素都进行横向布局
{ xtype:'container', layout:'hbox',//里面的按钮子元素就会横向布局了 items:[ { xtype:'button', text:'按钮1' }, { xtype:'button', text:'按钮2' } ] }
Demo2 垂直布局
想让某个grid 填充满剩下的部分,并且grid实现内部自己滚动
首先
要对grid的父级容器设置 layout:‘vbox’或fit,表明 让grid进行自动填充高度(看不懂的注意看demo代码的注释)
然后
grid要加入 flex:1 属性(一般设置vbox或hbox都会设置flex属性),让grid有高度,并超出自己高度后 grid自己出现滚动条
{ xtype: 'container', layout: 'vbox',//让内部元素以垂直方式布局 items: [{ xtype: 'container', layout: 'fit',//让子元素按钮均分此container items: [ { xtype: 'button', text: '按钮1' }, { xtype: 'button', text: '按钮2' }, ] }, { xtype: 'grid', flex: 1, store: {//给当前grid配置store autoLoad: false, proxy: { type: 'memory', }, data: [ {title: 'list item 1'}, {title: 'list item 2'}, {title: 'list item 3'}, {title: 'list item 4'}, {title: 'list item 5'}, {title: 'list item 6'}, {title: 'list item 7'}, ], }, columns: [{ text: 'Title', flex: 1, dataIndex: 'title', minWidth: 100 }], }] }
Demo3 中心布局
layout:’center’ 就是让子元素进行中心布局,可以试试看如果 【这是爸爸panel】不设置layout:center 会出现什么情况
{ title:'这是爷爷', layout:'center',// 让 子元素 爸爸anel进行居中 items:[ { xtype:'panel', title:'这是爸爸', border: true, height:400, width:400, layout:'center',// 让 子元素 儿子innerPanel进行居中 items:[ { xtype:'panel', title:'这是儿子innerPanel', height:200, width:200, border: true, } ] }, ] }
除了以上几种布局外,还有其他的布局方式(本文采用的是ExtJS modern版本,所以采用的都是modern的api)
![[ExtJS]Layout 布局](https://javaforall.net/wp-content/uploads/2020/11/2020110817443450.jpg)
这里可以看到各种 官网布局的例子
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/221847.html原文链接:https://javaforall.net
