一、属性特性
布局语法
block elements:display: flex;
inline elements:display: inline-flex;
使用弹性盒子(Flex Box),其弹性子项(Flex item)的float、clear和vertical-align属性均会失效。
二、属性详解
(一)flex-direction 属性
flex-direction属性规定弹性子项(Flex item)在其父级弹性容器(Flex container)中的排列方向。
常用语法如下:
flex-direction: row | row-reverse | column | column-reverse;
我们分别设置以上四个属性,显示效果如下:
(二)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 item)变形了。
此时,弹性子项(Flex item)溢出了父级弹性容器(Flex container)。
flex-wrap: wrap;规定若弹性子项溢出其父级弹性容器(Flex container),则溢出部分会自动换行。
显示效果如下:
flex-wrap: wrap-reverse;规定弹性子项(Flex item)反转排列。
(三)flex-flow 属性
flex-flow是flex-direction和flex-wrap的复合属性。若只写一个属性,则另外一个属性为默认属性。
(四)justify-content 属性
justify-content规定弹性子项(Flex item)沿着其父级弹性容器(Flex container)的主轴线(main axis)的对齐方式。
常用语法如下:
justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly;
我们分别设置以上六个属性,显示效果如下:
(五)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)的高度。具体如下图所示:
(六)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要高。