flex流布局的用法

1:如果设置了父view属性display:flex;而没有设置flex-direction属性,那么flex-direction默认是row。

2:在流布局中flex-direction: row-reverse;就是flex-direction: row;的反方向, flex-direction: column-reverse;是flex-direction: column;的反方向,示例代码如下:

示例一:

  我是文本


  我是文本

flex流布局的用法_第1张图片
效果图
示例二:

  我是文本


  我是文本

flex流布局的用法_第2张图片
效果图

3:流布局的flex-wrap属性,默认情况下是不换行的,nowrap(默认):不换行;wrap:换行,第一行在上方;wrap-reverse:换行,第一行在下方。

示例代码如下:

  我是文本
  我是文本
  我是文本
  我是文本
  我是文本
  我是文本


  我是文本
  我是文本
  我是文本
  我是文本
  我是文本
  我是文本


  我是文本
  我是文本
  我是文本
  我是文本
  我是文本
  我是文本

flex流布局的用法_第3张图片
效果图

4:流布局的flex-flow属性:flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap

5:justify-content属性定义了项目在主轴上的对齐方式,具体对齐方式与轴的方向有关。下面假设主轴为从左到右。

flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。


  左对齐
  左对齐
  左对齐


  居中
  居中
  居中


  右对齐
  右对齐
  右对齐


  两端对齐
  两端对齐
  两端对齐


  两侧间隔
  两侧间隔
  两侧间隔

flex流布局的用法_第4张图片
效果图

6:流布局中的子view可以设置order属性,order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0,示例代码如下:


  文本1
  文本2
  文本3
  文本4
  文本5
  文本6

flex流布局的用法_第5张图片
效果图

7:flex-grow属性:flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。


  文本1
  文本2
  文本3


  文本1
  文本2
  文本3


  文本1
  文本2
  文本3


  文本1
  文本2
  文本3

flex流布局的用法_第6张图片
效果图

8:flex-shrink属性:flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。 如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。 负值对该属性无效。


  文本3
  文本2
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3


  文本3
  文本2
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3


  文本3
  文本2
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3
  文本3

flex流布局的用法_第7张图片
效果图

9:flex属性:flex属性是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选。 该属性有两个快捷值:auto (1 1 auto) 和 none (0 0 auto)。 建议优先使用这个属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

10:align-items属性:align-items属性适用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式。在使用该属性时记得先固定父view的高度,只有先给父view的高度设置固定的值该属性才能生效,align-items和align-content有相同的功能,不过不同点是它是用来让每一个单行的容器居中而不是让整个容器居中。


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3

flex流布局的用法_第8张图片
效果图

11:align-self属性是写在flex的子view属性上的,在使用该属性时记得先固定父view的高度,align-self属性定义flex的子项单独在侧轴(纵轴)方向上的对齐方式。注意:align-self 属性可重写灵活容器的 align-items 属性。


  文本3
  文本3
  文本3

flex流布局的用法_第9张图片
效果图

12:align-content属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用,换句话说就是如果父view中的内容不换行,该属性是不起作用的,因此为了换行,这是我们需要用到flex-wrap: wrap;属性。在使用该属性时记得先固定父view的高度

该属性可能取6个值:
flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值):轴线占满整个交叉轴。


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3

flex流布局的用法_第10张图片
效果图

以上flex学习的参考网址:

https://blog.csdn.net/weixin_37049906/article/details/77066238
https://www.jianshu.com/p/997e1a83f07e
http://www.cnblogs.com/zmc-change/p/6178757.html
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
http://www.ruanyifeng.com/blog/2015/07/flex-examples.html

13:关于块级元素(这里指view)和非块级元素(这里指text)的心得:

1:块级元素是霸道的,当它出现的时候,如果不设置width加以限制的话,它会填满屏幕的宽度,这时如果给它设置宽度,不管多给宽度还是少给宽度,它都要了,而非块级元素则不是,它只会占用刚刚好的宽度,不管多给宽度还是少给宽度,它都不要;
2:块级元素会自动换行,即使宽度没有填满屏幕的宽度,也会自己对处于一行,很独特,而非块级元素则不是;
3:只有用flex才能管的住块级元素,给父块级元素设置了flex之后,其子块级元素就老实了,它就只占用刚刚好的宽度,不敢再占用整个屏幕的宽度了,并且它也不敢强行自己独占一行了,另外非块级元素也老实了,给它设置再小的宽度,它也得接受,不能不要了;
示例代码如下:

  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3


  文本3
  文本3
  文本3

文本3
文本3
文本3
flex流布局的用法_第11张图片
效果图

你可能感兴趣的:(flex流布局的用法)