flex 布局

Posted a-qiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了flex 布局相关的知识,希望对你有一定的参考价值。

flex布局就是弹性布局,任何一个容器都可以指定flex布局

display: flex; /* 定义容器为弹性布局,该容器表现为块级元素 */

display: inline-flex;  /* 定义容器为行内弹性布局,可以为它设置高度 */

div, span都是块级弹性布局:

div, span{ 
  display: flex;
}

div,span都是行内布局(不换行,但可以设置高度):

div, span{
  display: inline-flex;
}

弹性布局分为两大块:

弹性容器(父)的属性  和 项目(子)元素的属性;

父容器的属性:

1. flex-direction  规定了子元素的排列方向:

  row 默认值,从左到右水平排列

  row-reverse 从右到左水平排列

  column 从上到下垂直排列

  column-reverse 从下到上垂直排列

div{
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
}

 2. flex-wrap 规定了如果子元素在改排列方向排不下改怎么换行:

  nowrap 默认值,不换行,如果子元素排不下会自动缩小该方向的值

  wrap 换行,排不下的子元素会另起一行

  wrap-reverse 换行,排不下的元素另起一行,并且排在之前元素的前边

div{
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
  flex-wrap: nowrap | wrap | wrap-reverse;
}

3. flex-flow 是 flex-direction、flex-wrap的简写 

4. justify-content 规定了子元素在该排列方向的对齐方式

  flex-start 默认值,从排列方向的起始方向对齐

  flex-end 起始方向的反方向对齐

  center 居中对齐

  space-between 两端对齐

  space-around 子元素间隔相等,也就是说每个子元素的margin相等(除了行末最后一项)

div{
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
  flex-wrap: nowrap | wrap | wrap-reverse;
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

5.align-items  规定了子元素在该排列方向上的另外一个轴的对齐方式(flex-direction规定从左到右排列,那么align-items就是规定子元素从上到下怎么对齐的)

  stretch 默认值,子元素未设置(或者设为auto)高度或者宽度时该属性将占满整个父容器的高或者宽

  flex-start 起始方向对齐(和子元素中的第一项的方向对齐)

  flex-end 终点方向对齐(和子元素中的最后一项的方向对齐)

  center 居中对齐

  baseline 和子元素的第一行文字对齐

div{
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
  flex-wrap: nowrap | wrap | wrap-reverse;
  justify-content: flex-start | flex-end | center | space-between | space-around;
  align-items: stretch | flex-start | flex-end | center | baseline;
}

 

6.align-content  规定了当子元素有多行的时候对齐方式

  stretch 默认值,占满,剩余空间平均分

  flex-start 起点对齐

  flex-end 终点对齐

  center 居中对齐

  space-between 两端对齐

  space-around 子元素间隔相等,也就是说每个子元素的margin相等(除了行末最后一项)

div{
  display: flex;
  flex-direction: row | row-reverse | column | column-reverse;
  flex-wrap: nowrap | wrap | wrap-reverse;
  justify-content: flex-start | flex-end | center | space-between | space-around;
  align-items: stretch | flex-start | flex-end | center | baseline;
  align-content: stretch | flex-start | flex-end | center | space-between | space-around
}

 

 

子项目属性(容器内元素):

1.order 数值 默认为0,排序越小排列越靠前

2.flex-grow 数值 默认值0不放大, 规定子元素的放大比例(每个子元素都设置为1就是等分父容器的剩余空间,如果有剩余空间的话)

3.flex-shrink 数值  默认值1缩小, 父容器不够大的时候是否缩小子元素,默认是缩小,当有子元素设为0的时候它本身不缩小,其他值为1的等比缩小

4.flex-basis  默认值为auto, 根据这个属性的值来计算父容器剩余空间

5.flex  前面2.3.4的简写形式 默认值  0 1 auto 该属性有两个直接值 auto (1,1,auto)就是根据父容器来伸缩,none(0,0,auto) 不伸缩

6.align-self  可以更改父容器align-items规定的值

 

以上是关于flex 布局的主要内容,如果未能解决你的问题,请参考以下文章

UniApp的Flex布局

Vue 中 Flex布局

进一步了解flex布局

弹性布局(Flex)布局介绍

Flex布局实践

Flex布局详解