第五课,Extjs中面板布局的应用

时间:2023-01-30 22:28:58

目标:

      介绍Panel布局的各种类

      Panel布局类在VS中的介绍

内容:

      Panel布局类有10种:容器布局,自适应布局,折叠布局,卡片式布局,锚点布局,绝对位置布局,表单布局,列布局,表格布局,边框布局

      1,Ext.layout.ContainerLayout 容器布局

      提供容器作为布局的基础逻辑,通常会被扩展而不通过new 关键字直接创建,一般作为默认布局存在  

      2,Ext.layout.FitLayout 自适应布局

      使用layout:'fit' 将使面板子元素自动充满容器,如果有多个子面板也只会第一个会被显示

      第五课,Extjs中面板布局的应用

      3,Ext.layout.AccordionLayout 折叠布局  (很常有哦!!!)

       扩展自适应布局,layout:'accordion' 它包含了多个子面板,任何时候都只有一个子面板处于打开状态,每个面板都有展开和收缩的功能

       第五课,Extjs中面板布局的应用

      4 ,Ext.layout.CardLayout 卡片式布局  (也很有用的哦!!)

       扩展自适应布局,layout:'card' 它包含了多个子面板,只有一个面板处于显示状态,它用来制作向导或标签页,使用setActiveItem来激火面板

        第五课,Extjs中面板布局的应用

      5,Ext.layout.AnchorLayout 锚点布局

       根据容器的大小为其所包含的子面板进行定位的布局 layout:'anchor'  分为:百分比,偏移,参考边 三种方式的定位

       第五课,Extjs中面板布局的应用

      6,Ext.layout.AbsoluteLayout 绝对位置布局

       根据面板中配置 x/y 坐标进行定位,layout:'absolute' 坐标值支持使用固定值和百分比两种形式

       第五课,Extjs中面板布局的应用

      7,Ext.layout.FormLayout  表单布局

       用来管理表单字段的显示,内制了表单布局,提供了表单提交,读取等表单功能,layout:'form'

       第五课,Extjs中面板布局的应用

     8, Ext.layout.ColumnLayout 列布局

      多列风格的布局格式,每一列的宽度都可以通过百分比和数值确定宽度,layout:'column'

     9, Ext.layout.TableLayout 表格布局

      可以指定列数,跨行,跨列,可以创建出复杂的表格布局 layout:'table'

      第五课,Extjs中面板布局的应用

    10, Ext.layout.BorderLayout 边框布局

     该布局包含多个面板,是一个面向应用的UI风格的布局,它包含5个部分:east,south,west,north,center,layout:'border' 通过region来配置面板

      第五课,Extjs中面板布局的应用

   

     viewport的应用:作为浏览器窗口的整个显示部分,其有着panel的功能,但是一定要注意的是一个页面只有一个viewport

       第五课,Extjs中面板布局的应用

    示例分析部分

第五课,Extjs中面板布局的应用第五课,Extjs中面板布局的应用Extjs面板布局介绍
   
   
   
1 <% @ Page Language = " C# " AutoEventWireup = " true " CodeBehind = " Ext6.aspx.cs " Inherits = " EXT1.Ext6 " %>
2
3   <! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
4
5   < html xmlns = " http://www.w3.org/1999/xhtml " >
6 < head runat = " server " >
7 < title > 第六课,Extjs中面板布局的应用 </ title >
8 < link href = " ext-3.2.0/resources/css/ext-all.css " rel = " stylesheet " type = " text/css " />
9 < script src = " ext-3.2.0/adapter/ext/ext-base.js " type = " text/javascript " ></ script >
10 < script src = " ext-3.2.0/ext-all.js " type = " text/javascript " ></ script >
11 < script type = " text/javascript " >
12 function Read1() {
13 var MyPanel = new Ext.Panel({
14 title: ' 自适应布局 ' ,
15 width: 250 ,
16 height: 200 ,
17 x: 300 ,
18 y: 50 ,
19 floating: true ,
20 renderTo:id1,
21 frame: true ,
22 layout: ' fit ' ,
23 items:[
24 {
25 title: " 面板一 " ,
26 html: " 面板一内容 "
27 },
28 {
29 title: ' 面板二 ' ,
30 html: ' 面板二内容 '
31 }
32 ]
33 });
34 }
35 function Read2() {
36 var Mypanel = new Ext.Panel({
37 layout: ' accordion ' ,
38 title: ' 折叠布局 ' ,
39 renderTo:id1,
40 width: 250 ,
41 height: 300 ,
42 x: 300 ,
43 y: 50 ,
44 floating: true ,
45 frame: true ,
46 collapsible: true ,
47 titleCollapse: true ,
48 layoutConfig:{
49 activeOnTop: false ,
50 fill: true ,
51 hideCollapseTool: false ,
52 titleCollapse: true ,
53 animate: true
54 },
55 items:[
56 {
57 title: " 面板一 " ,
58 html: " 面板一内容 "
59 },
60 {
61 title: ' 面板二 ' ,
62 html: ' 面板二内容 '
63 },
64 {
65 title: ' 面板3 ' ,
66 html: ' 面板3内容 '
67 },
68 {
69 title: ' 面板4 ' ,
70 html: ' 面板4内容 '
71 },
72 {
73 title: ' 面板5 ' ,
74 html: ' 面板5内容 '
75 }
76
77 ]
78 });
79 }
80 function Read3() {
81 var Mypanel = new Ext.Panel({
82 layout: ' card ' ,
83 title: ' 卡片布局 ' ,
84 renderTo:id1,
85 width: 250 ,
86 height: 300 ,
87 x: 300 ,
88 y: 50 ,
89 floating: true ,
90 frame: true ,
91 collapsible: true ,
92 titleCollapse: true ,
93 activeItem: 0 ,
94
95 items:[
96 {
97 title: " 面板一 " ,
98 html: " 面板一内容 " ,
99 id: ' p1 '
100 },
101 {
102 title: ' 面板二 ' ,
103 html: ' 面板二内容 ' ,
104 id: ' p2 '
105 },
106 {
107 title: ' 面板三 ' ,
108 html: ' 面板三内容 ' ,
109 id: ' p3 '
110 }
111 ],
112 buttons:[
113 {
114 text: ' 上一页 ' ,
115 handler:change
116 },
117 {
118 text: ' 下一页 ' ,
119 handler:change
120 }
121 ]
122 });
123 function change(btn) {
124 var index = Number(Mypanel.layout.activeItem.id.substring( 1 ));
125 if (btn.text == ' 上一页 ' ) {
126 index -= 1 ;
127 if (index < 1 ) {
128 index = 1 ;
129 }
130 }
131 else
132 {
133 index += 1 ;
134 if (index > 3 ) {
135 index = 3 ;
136 }
137 }
138 Mypanel.layout.setActiveItem( ' p ' + index);
139 }
140 }
141 function Read4() {
142 var Mypanel = new Ext.Panel({
143 title: ' 锚点布局 ' ,
144 renderTo:id1,
145 frame: true ,
146 width: 300 ,
147 height: 200 ,
148 x: 300 ,
149 y: 50 ,
150 floating: true ,
151 collapsible: true ,
152 titleCollapse: true ,
153 layout: ' anchor ' ,
154 items:[{
155 anchor: ' 50%,50% ' ,
156 draggable: true ,
157 title: ' 子面板 '
158 },
159 {
160 anchor: ' -10,-10 ' ,
161 title: ' 子面板2 '
162 }]
163 });
164 }
165 function Read5() {
166 var Mypanel = new Ext.Panel({
167 title: ' 绝对位置布局 ' ,
168 renderTo:id1,
169 frame: true ,
170 width: 300 ,
171 height: 200 ,
172 x: 300 ,
173 y: 50 ,
174 floating: true ,
175 collapsible: true ,
176 titleCollapse: true ,
177 layout: ' absolute ' ,
178 items:[{
179 x: ' 10% ' ,
180 y: 10 ,
181 width: 100 ,
182 height: 50 ,
183 title: ' 子面板 '
184 },
185 {
186 x: 90 ,
187 y: 70 ,
188 width: 100 ,
189 height: 50 ,
190 title: ' 子面板2 '
191 }]
192 });
193 }
194 function Read6() {
195 var MyPanel = new Ext.Panel({
196 layout: ' form ' ,
197 title: ' 表单布局 ' ,
198 renderTo:id1,
199 frame: true ,
200 width: 300 ,
201 height: 200 ,
202 x: 300 ,
203 y: 50 ,
204 floating: true ,
205 collapsible: true ,
206 titleCollapse: true ,
207 defaultType: ' textfield ' ,
208 labelSeparator: ' : ' ,
209 defaults:{msgTarget: ' side ' },
210 items:[
211 {
212 fieldLabel: ' 用户名称 ' ,
213 allowBlank: false
214 },
215 {
216 fieldLabel: ' 用户密码 ' ,
217 allowBlank: false
218 }
219 ]
220 });
221 }
222 function Rand7() {
223 Ext.QuickTips.init();
224 var MyPanel = new Ext.Panel({
225 title: ' 列布局 ' ,
226 renderTo:id1,
227 frame: true ,
228 width: 300 ,
229 height: 200 ,
230 x: 300 ,
231 y: 50 ,
232 floating: true ,
233 layout: ' column ' ,
234 items:[
235 {
236 title: ' 面板1 ' ,
237 width: 100 ,
238 height: 100
239 },
240 {
241 title: ' 面板2 ' ,
242 width: 100 ,
243 height: 100
244 }
245 ]
246 });
247 }
248 function Read8() {
249 var Mypanel = new Ext.Panel({
250 title: ' 表格布局 ' ,
251 renderTo:id1,
252 frame: true ,
253 width: 400 ,
254 height: 300 ,
255 x: 350 ,
256 y: 50 ,
257 floating: true ,
258 collapsible: true ,
259 titleCollapse: true ,
260 draggable:{
261 insertProxy: false , // 拖动时不虚线显示原始位置
262 onDrag : function(e){
263 var pel = this .proxy.getEl();
264 this .x = pel.getLeft( true );
265 this .y = pel.getTop( true ); // 获取拖动时panel的坐标
266 var s = this .panel.getEl().shadow;
267 if (s){
268 s.realign( this .x, this .y, pel.getWidth(), pel.getHeight());
269 }
270 },
271 endDrag : function(e){
272 this .panel.setPosition( this .x, this .y); // 移动到最终位置
273 }
274 },
275 layout: ' table ' ,
276 layoutConfig:{
277 columns: 3
278 },
279 items:[
280 {
281 title: ' 面板1 ' ,
282 html: ' 面板一内容 ' ,
283 rowspan: 2 ,
284 height: 80
285 },
286 {
287 title: ' 面板2 ' ,
288 html: ' 面板2内容 ' ,
289 colspan: 2
290
291 },
292 {
293 title: ' 面板3 '
294 },
295 {
296 title: ' 面板4 '
297 }
298
299 ]
300 });
301 }
302 function Read9() {
303 var Mypanel = new Ext.Viewport({
304 layout: " border " ,
305 items:[
306 {
307 region: " north " ,
308 height: 50 ,
309 title: " 顶部面板 "
310 },
311 {
312 region: " south " ,
313 height: 50 ,
314 title: " 底部面板 "
315 },
316 {
317 region: " center " ,
318 title: " *面板 "
319 },
320 {
321 region: " west " ,
322 width: 100 ,
323 title: " 左边面板 "
324 },
325 {
326 region: " east " ,
327 width: 100 ,
328 title: " 右边面板 "
329 }
330 ]
331 });
332 }
333 function Read10() {
334 var b = new Ext.Button({
335 id: " show-btn " , // 定义按钮的ID
336 text: " 弹出按钮 " , // 定义按钮的标题
337 renderTo:document.body // 将弹出按钮渲染到窗体上
338 });
339 var button = Ext. get ( ' show-btn ' );
340 var win;
341 button.on( ' click ' , function() {
342 // 创建TabPanel
343 var tabs = new Ext.TabPanel({
344 region: ' center ' , // border布局,将页面分成东,南,西,北,中五部分,这里表示TabPanel放在中间
345 margins: ' 3 3 3 0 ' ,
346 activeTab: 0 , // 当前选项卡是第1个(从0开始)
347 defaults: {
348 autoScroll: true
349 },
350 items:
351 [
352 {
353 title: ' Bogus Tab ' ,
354 html: " 第一个Tab的内容. "
355 },
356 {
357 title: ' Another Tab ' ,
358 html: " 我是另一个Tab "
359 },
360 {
361 title: ' Closable Tab ' ,
362 html: " 这是一个可以关闭的Tab " ,
363 closable: true // 显示关闭按钮
364 }
365 ]
366
367 });
368
369 // 定义一个Panel
370 var nav = new Ext.Panel({
371 title: ' Navigation ' ,
372 region: ' west ' , // 放在西边,即左侧
373 split: true , // 设置为分割
374 width: 200 ,
375
376 collapsible: true , // 允许伸缩
377 margins: ' 3 0 3 3 ' ,
378 cmargins: ' 3 3 3 3 '
379 });
380
381 // 如果窗口第一次被打开时才创建
382 if ( ! win) {
383 win = new Ext.Window({
384 title: ' Layout Window ' ,
385 closable: true , // 显示关闭按钮
386 width: 600 ,
387
388 height: 350 ,
389
390 border : false ,
391 plain: true ,
392 layout: ' border ' ,
393 closeAction: ' hide ' ,
394 items: [nav, tabs] // 把上面创建的panel和TabPanel放在window中,并采用border方式布局
395 });
396
397 }
398
399 win.show(button);
400
401 });
402 };
403 Ext.onReady(Read10);
404 </ script >
405 </ head >
406 < body >
407 < form id = " form1 " runat = " server " >
408 < div id = " id1 " >
409
410 </ div >
411 </ form >
412 </ body >
413 </ html >
414