CSS3 弹性盒子(Flex Box)

164 阅读3分钟

一、属性特性

布局语法

block elements:display: flex;
inline elements:display: inline-flex;

使用弹性盒子(Flex Box),其弹性子项(Flex item)的floatclearvertical-align属性均会失效。

二、属性详解

(一)flex-direction 属性

flex-direction属性规定弹性子项(Flex item)在其父级弹性容器(Flex container)中的排列方向。

常用语法如下:

flex-direction: row | row-reverse | column | column-reverse;

我们分别设置以上四个属性,显示效果如下:

Flex Box-1.png

Flex Box-2.png

Flex Box-3.png

Flex Box-4.png

(二)flex-wrap 属性

flex-wrap属性规定弹性子元素(Flex item)的换行方式。

常用语法如下:

flex-wrap: nowrap | wrap | wrap-reverse | initial | inherit;

flex-wrap: nowrap;为默认属性。在该属性下,弹性子项(Flex item)可能会有不同程度的变形,也可能会溢出其父级弹性容器(Flex container)。

我们给每个盒子设置width: 100px; height: 100px;,显示效果如下:

Flex Box-5.png

此时,弹性子项(Flex item)变形了。

Flex Box-6.png

此时,弹性子项(Flex item)溢出了父级弹性容器(Flex container)。

flex-wrap: wrap;规定若弹性子项溢出其父级弹性容器(Flex container),则溢出部分会自动换行。

显示效果如下:

Flex Box-7.png

flex-wrap: wrap-reverse;规定弹性子项(Flex item)反转排列。

(三)flex-flow 属性

flex-flowflex-directionflex-wrap的复合属性。若只写一个属性,则另外一个属性为默认属性。

(四)justify-content 属性

justify-content规定弹性子项(Flex item)沿着其父级弹性容器(Flex container)的主轴线(main axis)的对齐方式。

常用语法如下:

justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;

我们分别设置以上六个属性,显示效果如下:

Flex Box-8.png

Flex Box-9.png

Flex Box-10.png

Flex Box-11.png

(五)align-items 属性

lign-items规定弹性子项(Flex item)在侧轴(纵轴)方向上的对齐方式。

常用语法如下:

align-items: flex-start | flex-end | center | baseline | stretch

align-items: stretch;为默认属性。在该属性下,若弹性子项(Flex item)未设置高度或者设置height: auto;,则弹性子项(Flex item)的高度会占满其父级弹性容器(Flex container)的高度。具体如下图所示:

Flex Box-12.png

(六)align-content 属性

常用语法如下:

align-content: flex-start | flex-end | center | space-between | space-around | stretch

(七)弹性子项(Flex item) 属性

1. order 属性

默认值为0。用整数值(可为负值)来规定弹性子项(Flex item)的排列顺序,数值小的排在前面。

2. align-self 属性

align-self属性用于设置弹性子项(Flex item)自身在侧轴(纵轴)方向上的对齐方式。

常用语法:

align-self: auto | flex-start | flex-end | center | baseline | stretch

3. flex 属性

flex属性用于规定弹性子项(Flex item)的空间分配方式。

常用语法:

flex: auto | initial | none | inherit |  [ flex-grow ] || [ flex-shrink ] || [ flex-basis ]

flex-grow 属性

默认值为0,表示即使存在剩余空间,设置该属性的弹性子项(Flex item)也不会扩展。若设置flex-grow: 1;,则设置该属性的弹性子项(Flex item)将会扩展至撑满剩余空间。

flex-shrink 属性

默认值是1,表示设置该属性的弹性子项(Flex item)会被压缩。若设置flex-shrink: 0;,则表示该属性的弹性子项(Flex item)将不会被压缩。

flex-basis 属性

优先级比同时设置的width要高。