flex盒子布局

Posted it蛋散

tags:

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

看过很多对于弹性盒子flex的简介,但还是觉得阮一峰大神的解析和张鑫旭大神(旧版flex)的解析比较容易理解,下面,我以自己的理解来叙述关于flex弹性布局!

1.概念(容器和项目)

在flex中,有容器和项目之分,但也只是相对的,假如说:div1里面有div2,div2里面有div3,而且他们都被定义为flex盒子:

div1相对于div2来说就是容器,div2相对于div1来说就是项目

div2相对于div3来说就是容器,div3相对于div2来说就是项目

这里的div2,既是容器,也是项目,取决与他的相对位置是谁。

 

2.对弹性盒子的定义

一般来说,只要父级被定义了display:flex;那么父级元素和里面的子集元素都会被定义为弹性盒子,孙子级别的标签却不会,如果想要成为弹性盒子,则需要在对应的子级元素上定义display:flex;

 

3.写在容器上的属性

  • flex-direction[row | row-reverse | column | column-reverse]
    • row(默认值):主轴为水平方向,起点在左端。
    • row-reverse:主轴为水平方向,起点在右端。
    • column:主轴为垂直方向,起点在上沿。
    • column-reverse:主轴为垂直方向,起点在下沿。
    • 技术分享图片
  • flex-wrap[nowrap | wrap | wrap-reverse]
    • nowrap(默认):不换行
    • wrap:换行,第一行在上方
    • wrap-reverse:换行,第一行在下方
    • 技术分享图片
  • flex-flow[<flex-direction> || <flex-wrap>](是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap)
  • justify-content[flex-start | flex-end | center | space-between | space-around]
    • flex-start(默认值):左对齐
    • flex-end:右对齐
    • center: 居中
    • space-between:两端对齐,项目之间的间隔都相等。
    • space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
    • 技术分享图片
  • align-items[flex-start | flex-end | center | baseline | stretch]
    • flex-start:交叉轴的起点对齐。
    • flex-end:交叉轴的终点对齐。
    • center:交叉轴的中点对齐。
    • baseline: 项目的第一行文字的基线对齐。
    • stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
    • 技术分享图片
  • align-content[flex-start | flex-end | center | space-between | space-around | stretch]
    • flex-start:与交叉轴的起点对齐。
    • flex-end:与交叉轴的终点对齐。
    • center:与交叉轴的中点对齐。
    • space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
    • space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
    • stretch(默认值):轴线占满整个交叉轴。
    • 技术分享图片

 

4.写在项目上的属性

  • order[Number](定义项目的排列顺序。数值越小,排列越靠前,默认为0。)

技术分享图片

  • flex-grow[Number](定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。)

技术分享图片

  • flex-shrink[Number](定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小)

技术分享图片

  • flex-basis[<length> | auto](定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小)

技术分享图片

  • flex(是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 1 auto。后两个属性可选)

 

  • align-self[auto | flex-start | flex-end | center | baseline | stretch]
    • auto:自动
    • flex-start:与交叉轴的起点对齐。
    • flex-end:与交叉轴的终点对齐。
    • center:与交叉轴的中点对齐。baseline :与交叉轴两端对齐,轴线之间的间隔平均分布。
    • stretch(默认值):轴线占满整个交叉轴。

技术分享图片

注意:设为 Flex 布局以后,子元素的floatclearvertical-align属性将失效。

(完!)

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

AngularJS 实现弹性盒子布局

弹性盒子flex布局

CSS弹性盒子布局flex

弹性盒子布局(flex布局)

CSS布局 + Flex布局

CSS3--Flex弹性盒子布局: flex项目的属性