CSS3 中的Flex

CSS3 引入了一种新的布局模式————弹性盒子。

引入弹性盒子的目的是提供一种更加有效的方式来对一个容器中的子元素进行排列、对齐和分配空白空间。

简介

弹性盒子由 弹性容器(Flex container)弹性子元素(Flex item) 组成。弹性容器 通过设置 display 的值为 flexflex-inline ,将其定义为 弹性容器弹性容器 内包含一个或多个 弹性子元素

弹性容器 外和 弹性子元素 内都是正常渲染,弹性盒子 只定义了 弹性子元素 如何在 弹性容器 内的布局。

Flex 即为 弹性布局。设置为 Flex 布局之后,子元素floatclearvertical-align 属性将失效。

接下来,介绍 Flex 常用的几个属性。

常用属性

flex-direction

flex-direction弹性子元素弹性容器水平方向 上的排列规则。

注意,这很重要:

  • flex-direction 方向不同( rowcolumn ),会导致其他6个 flex 属性( flex-wrapfelx-flowjustify-contentalign-contentalign-itemsalign-self )的方向也不同!!
  • 后面6个 flex 属性的例子中,flex-direction 都为 row
  • 如果 flex-direction 改成 column ,会导致方向与现在的例子相反。即 水平xx 的都会变成 垂直xx ,而 垂直xx 的会变成 水平xx


主要有以下几个值:rowrow-reversecolumncolumn-reverseinitialinherit

row

  • 默认值 ;水平方向,从左往右正常排列。

row-reverse

  • 水平方向,从右往左排列。

column

  • 垂直方向,从上往下排列。

column-reverse

  • 垂直方向,从下往上排列。

initial

  • 设置改属性为它的默认值。

inherit

  • 从父元素继承该属性。

flex-wrap

flex-wrap :规定 弹性子元素 是一行还是多行显示在 弹性盒子 内。即 弹性子元素 是否换行。

主要有以下几个值:nowrapwrapwrap-reverseinitialinherit

nowrap

  • 默认值弹性子元素 不换行,宽度会改变(压缩)。

wrap

  • 弹性子元素 换行,宽度不会改变。

wrap-reverse

  • 弹性子元素 换行,宽度不会改变,且从右往左排序。

initial

  • 设置该属性为它的默认值。

inherit

  • 从父元素继承该属性。

flex-flow

flex-flowflex-directionflex-wrap 的组合,第一个参数为 flex-direction ,第二个参数为 flex-wrap

row-reverse wrap

  • 反向排序,且换行。

justify-content

justify-content弹性子元素 关于 弹性盒子 垂直轴,在水平方向上的分布规则。

主要有以下几个值:flex-startflex-endcenterspace-betweenspace-aroundinitialinherit

flex-start

  • 默认值 ;不拆分,紧贴 弹性容器 的左边框。

flex-end

  • 不拆分,紧贴 弹性容器 的右边框。

center

  • 不拆分,在 弹性容器 内居中显示。

space-between

  • 拆分,分别紧贴 弹性容器 的左、右边框, 弹性子元素 之间由 空白 分隔。

space-around

  • 拆分,每个 弹性子元素 由宽度相同的 空白 围绕。所以 弹性子元素到边框 的距离是 弹性子元素到弹性子元素 距离到一半。

initial

  • 设置该属性为它的默认值。

inherit

  • 从父元素继承该属性。

align-content

align-content弹性子元素 关于 弹性盒子 水平轴,在垂直方向上的分布规则。

提示: 使用该参数时必须同时使用 flex-wrap: wrapflex-flow: xxx wrap (wrap-reverse 也可)。

主要有以下几个值:stretchflex-startflex-endcenterspace-betweenspace-aroundinitialinherit

stretch

  • 默认值 ;拆分,弹性子元素 被拉伸以适应 弹性容器

flex-start

  • 不拆分,弹性子元素 紧贴 弹性容器 的上边框。

flex-end

  • 不拆分,弹性子元素 紧贴 弹性容器 的下边框。

center

  • 不拆分,在 弹性容器 内居中显示。

space-between

  • 拆分,分别紧贴 弹性容器 的上、下边框,弹性子元素 之间由 空白 分隔。

space-around

  • 拆分,每个 弹性子元素 由宽度相同的 空白 围绕。所以 弹性子元素到边框 的距离是 弹性子元素到弹性子元素 距离到一半。

initial

  • 设置该属性为它的默认值。

inherit

  • 从父元素继承该属性。

align-items

align-items :设置 弹性容器 内的 所有弹性子元素 的对齐方式。

主要有以下几个值:stretchflex-startflex-endcenterbaselineinitialinherit

stretch

  • 默认值 ;拉伸 弹性子元素 以适应 弹性容器

flex-start

  • 弹性子元素 向上对齐 弹性容器

flex-end

  • 弹性子元素 向下对齐 弹性容器

center

  • 弹性子元素 居中对齐 弹性容器

baseline

  • 弹性子元素 对齐 弹性容器 的基线(基本等效于 flex-start )。

initial

  • 设置该属性为它的默认值。

inherit

  • 从父元素继承该属性。

align-self

align-items :设置 弹性容器 内的 单个 弹性子元素 的对齐方式。

主要有以下几个值:autostretchflex-startflex-endcenterbaselineinitialinherit

auto

  • 默认值 ;继承它的父容器 (弹性容器) 的 align-items 属性,如果没有父容器则该值为 stretch

stretch

  • 拉伸 弹性子元素 以适应 弹性容器

flex-start

  • 弹性子元素 向上对齐 弹性容器

flex-end

  • 弹性子元素 向下对齐 弹性容器

center

  • 弹性子元素 居中对齐 弹性容器

baseline

  • 弹性子元素 对齐 弹性容器 的基线(基本等效于 flex-start )。

initial

  • 设置该属性为它的默认值。

inherit

  • 从父元素继承该属性。

参考链接

css display:flex 属性

CSS flex 属性

CSS3 弹性盒子(Flex Box)

分享到:
11