[b]flex布局基础[/b]
对于flex 初学者,在hello world之后,flex布局便是下一站学习要的要义。若是从传统的html转变而来,总希望找到类似于div/table/ul等之类的控件,也希望在flex中可以像dreamweaver一样可以拖拽控件;而如果是从windows application程序转变而来,则可能更喜欢absolute布局,让控件散落于页面之上,通过x/y控制其坐标。这种做法让html设计师觉得可笑,但我见过有人确实用vs这么做过。
喜欢div的朋友,可能觉得box很亲切;喜欢用table的设计师,对不起,flex没有table,grid虽与之极像,但不宜用来布局;application程序员也不要图行事,使用absolute布局,这种布局不宜开发web应用,如果只是开发桌面版则无关紧要。
本节写了三个demo:
◆absolute布局
◆hbox布局
◆vbox布局(与前者统称box布局)
如果开发air程序或者桌面应用,可以选择absolute布局;但如果开发web应用,推荐学习、研究box布局。右击可以查看源码。
[b]一、flex布局之absolute[/b]
用flex新建application时,最下面有一个布局属性选项:vertical,horizontal,absolute。意思如单词。若选择absolute,则application的子控件依据其{x,y}坐标依靠。但不影响第二代子控件,即,如果放一个hbox到该application中,hbox中的控件则水平排列。horizontal与vertical相当于把application做为一个水平或竖向的盒子(box),对子、孙控件的影响关系与absolute类似。
查看absolute,不难发现,可视区域的宽度是一定的,无论在何种分辨率下,何种浏览器宽度。但在web应用中,我们不希望出现这样的效果。相反,我们可能希望控件可以按照百分比自动调整位置。只此一条,开发web应用,便不建议使用absolute布局。由此便产生了方便、简单、易用的box布局。
[b]二、flex布局之hbox[/b]
hbox让子控件按水平方向自动排列,居右、居左或居中都可以。
查看hbox,控件与前者没有增减,同样的控件。但它可以自适应浏览器宽度。文章的标题栏部分用了一个hbox,其包涵三个子控件:label,spacer与linkbutton.spacer的宽度设为100%,这样无论label无多少字符,多宽,都可以把linkbutton撑到最右边。同样,也可以把它用在vbox中,则设置其高为100%。spacer在box布局中非常实用。<br>细心的朋友不难发现,这个application的layout属性是vertical,整个app相当于一个vbox。最下面的评论文本框与按纽也在一个hbox之内。
[b]三、flex布局之vbox[/b]
vbox让子控件在竖直方向上排列。top,bottom or center。
查看vbox,这个app的layout是horiazontal,相当于一个hbox。一级控件是两个vbox,一左一右。左边与前面的hbox对应的部分类似。右边用panel与titlewindow,还有grid,tile。panel与titlewindow都具有layout属性,可以在其内部放置任何子控件,待遇与application同。值得一提的是tile,它可让子控件流动延伸,先在x轴上排行,满了之后再换行。tilelist与其类似。
grid酷似html中的table,但差别很大,也不适合做布局用。实际应用中,也常用tile或tilelist代替。<br>box布局可以满足基本的项目应用,但有一些问题。譬如,文章内容要滚动显示,能不能像html那样实现流布局?答案是可以的。box布局只是基本的布局方法,并没有发挥flex的长处与优势。关于state与流布局在稍后。<br>在商业项目开发中,application99%都使用absolute布局,中间所用的容器间有box,tile或其它布局。
对于flex 初学者,在hello world之后,flex布局便是下一站学习要的要义。若是从传统的html转变而来,总希望找到类似于div/table/ul等之类的控件,也希望在flex中可以像dreamweaver一样可以拖拽控件;而如果是从windows application程序转变而来,则可能更喜欢absolute布局,让控件散落于页面之上,通过x/y控制其坐标。这种做法让html设计师觉得可笑,但我见过有人确实用vs这么做过。
喜欢div的朋友,可能觉得box很亲切;喜欢用table的设计师,对不起,flex没有table,grid虽与之极像,但不宜用来布局;application程序员也不要图行事,使用absolute布局,这种布局不宜开发web应用,如果只是开发桌面版则无关紧要。
本节写了三个demo:
◆absolute布局
◆hbox布局
◆vbox布局(与前者统称box布局)
如果开发air程序或者桌面应用,可以选择absolute布局;但如果开发web应用,推荐学习、研究box布局。右击可以查看源码。
[b]一、flex布局之absolute[/b]
用flex新建application时,最下面有一个布局属性选项:vertical,horizontal,absolute。意思如单词。若选择absolute,则application的子控件依据其{x,y}坐标依靠。但不影响第二代子控件,即,如果放一个hbox到该application中,hbox中的控件则水平排列。horizontal与vertical相当于把application做为一个水平或竖向的盒子(box),对子、孙控件的影响关系与absolute类似。
查看absolute,不难发现,可视区域的宽度是一定的,无论在何种分辨率下,何种浏览器宽度。但在web应用中,我们不希望出现这样的效果。相反,我们可能希望控件可以按照百分比自动调整位置。只此一条,开发web应用,便不建议使用absolute布局。由此便产生了方便、简单、易用的box布局。
[b]二、flex布局之hbox[/b]
hbox让子控件按水平方向自动排列,居右、居左或居中都可以。
查看hbox,控件与前者没有增减,同样的控件。但它可以自适应浏览器宽度。文章的标题栏部分用了一个hbox,其包涵三个子控件:label,spacer与linkbutton.spacer的宽度设为100%,这样无论label无多少字符,多宽,都可以把linkbutton撑到最右边。同样,也可以把它用在vbox中,则设置其高为100%。spacer在box布局中非常实用。<br>细心的朋友不难发现,这个application的layout属性是vertical,整个app相当于一个vbox。最下面的评论文本框与按纽也在一个hbox之内。
[b]三、flex布局之vbox[/b]
vbox让子控件在竖直方向上排列。top,bottom or center。
查看vbox,这个app的layout是horiazontal,相当于一个hbox。一级控件是两个vbox,一左一右。左边与前面的hbox对应的部分类似。右边用panel与titlewindow,还有grid,tile。panel与titlewindow都具有layout属性,可以在其内部放置任何子控件,待遇与application同。值得一提的是tile,它可让子控件流动延伸,先在x轴上排行,满了之后再换行。tilelist与其类似。
grid酷似html中的table,但差别很大,也不适合做布局用。实际应用中,也常用tile或tilelist代替。<br>box布局可以满足基本的项目应用,但有一些问题。譬如,文章内容要滚动显示,能不能像html那样实现流布局?答案是可以的。box布局只是基本的布局方法,并没有发挥flex的长处与优势。关于state与流布局在稍后。<br>在商业项目开发中,application99%都使用absolute布局,中间所用的容器间有box,tile或其它布局。