Flex布局 | 青训营

72 阅读1分钟

Flexbox Layout Module

在flex属性(以及对应的flexbox layout排版方式)出现之前,一般使用position、display、float等等属性组织页面的layout。而flexbox layout是一种更加responsive的layout方式。

flex box demos:www.w3schools.com/css/css3_fl…

flex container

为了实现flexbox layout的页面排版方式,首先需要在最外层容器上设置display: flex

.flex-container {
  display: flex;
}

然后对flex container使用下面这些属性,设定具体flex的逻辑

  • flex-direction:往哪个方向上摆放flex items
  • flex-wrap:决定单行还是多行,并且决定新行的堆叠方向。默认情况下是nowrap,此时会把flex items强行堆叠在一行当中
  • flex-flow:上述两个property的shorthand
  • justify-content:给flex items横向排版,比如可以实现居中
  • align-items:也是用来给flex item排版,但是是纵向的
  • align-content:是用来排版flex lines的,只有在多行的情况下有用。比如可以实现两行flex items一个贴在container上沿,一个贴在其下沿

PS:flex item是指flex container的直接孩子

flex item

flex item常常需要设置:

  • order:item所应该出现的顺序
  • flex-grow:在空间有多余时,item在剩余空间上增量份数
  • flex-shrink:在空间不足时,item在仅有空间上压缩的份数
  • flex-basis:item的初始长度
  • flex:上面3个的shorthand
  • align-self:用于覆盖flex container的align-items用的,仅规定自己这个flex item的align表现

PS:flex-grow、flex-shrink、flex-basis在使用时有一套公式,稍微有些麻烦。