那咱們就開始吧!app
Flex容器屬性
Flex是一組規則,用於在父容器中自動擴展多列和多行。
簡單的理解就是Flex有一組樣式規則,這些樣式規則能夠幫助你對內容按行或列來佈局。而這些規則都將運用於Flex容器元素上。ide
display:flex
在Flexbox中與其餘CSS屬性略有不一樣。在Flexbox中有一個Flex容器的概念(主容器),在Flex容器中的直接子元素都是Flex項目。而咱們剛纔提到的Flex規則,都只用於Flex容器上。佈局
Flex佈局是一個完整的模塊而不是一個單獨的屬性,它包括了完整的一套屬性。其中有的屬性是設置在容器(container,也能夠叫作父元素,稱爲flex
container)上,有的則是設置在容器的項目上(item,也能夠叫作子元素,稱爲flex items)上。
Properties for the Parent
(flex container)flex
Properties for the Children
(flex items)this
display
This defines a flex container; inline or block depending on the given value. It enables a flex context for all its direct children.spa
.container { display: flex; /* or inline-flex */ }
Note that CSS columns have no effect on a flex container.code
flex-direction
the four possible values of flex-direction being shown: top to bottom, bottom to top, right to left, and left to right
This establishes the main-axis, thus defining the direction flex items are placed in the flex container. Flexbox is (aside from optional wrapping) a single-direction layout concept. Think of flex items as primarily laying out either in horizontal rows or vertical columns.圖片
.container { flex-direction: row | row-reverse | column | column-reverse; }
row (default): left to right in ltr; right to left in rtl
row-reverse: right to left in ltr; left to right in rtl
column: same as row but top to bottom
column-reverse: same as row-reverse but bottom to topip
flex-wrap
two rows of boxes, the first wrapping down onto the secondci
By default, flex items will all try to fit onto one line. You can change that and allow the items to wrap as needed with this property.
.container{ flex-wrap: nowrap | wrap | wrap-reverse; }
nowrap (default): all flex items will be on one line
wrap: flex items will wrap onto multiple lines, from top to bottom.
wrap-reverse: flex items will wrap onto multiple lines from bottom to top.
There are some visual demos of flex-wrap here.
justify-content
flex items within a flex container demonstrating the different spacing options
This defines the alignment along the main axis. It helps distribute extra free space left over when either all the flex items on a line are inflexible, or are flexible but have reached their maximum size. It also exerts some control over the alignment of items when they overflow the line.
.container { justify-content: flex-start | flex-end | center | space-between | space-around | space-evenly; }
flex-start (default): items are packed toward the start line
flex-end: items are packed toward the end line
center: items are centered along the line
space-between: items are evenly distributed in the line; first item is on the start line, last item on the end line
space-around: items are evenly distributed in the line with equal space around them. Note that visually the spaces aren't equal, since all the items have equal space on both sides. The first item will have one unit of space against the container edge, but two units of space between the next item because that next item has its own spacing that applies.
space-evenly: items are distributed so that the spacing between any two items (and the space to the edges) is equal.
align-items
demonstration of differnet alignment options, like all boxes stuck to the top of a flex parent, the bottom, stretched out, or along a baseline
This defines the default behavior for how flex items are laid out along the cross axis on the current line. Think of it as the justify-content version for the cross-axis (perpendicular to the main-axis).
.container { align-items: stretch | flex-start | flex-end | center | baseline; }
stretch (default): stretch to fill the container (still respect min-width/max-width)flex-start: cross-start margin edge of the items is placed on the cross-start lineflex-end: cross-end margin edge of the items is placed on the cross-end linecenter: items are centered in the cross-axisbaseline: items are aligned such as their baselines align