前言
flexbox盒模型, 可伸缩式 (弹性) 布局, 能够有效改变盒子内容器大小, 填补盒子未使用的空间, 收缩容器以避免溢出盒子模型. 极其简单的控制盒子内的容器垂直, 水平布局
介绍
flex布局表面上类似于block布局, 不过flex布局缺少了 float, columns 等属性. 带来的回报是提供更加简单强大的工具,可以有效的分配 web页面的的空间内容.
- 可以在任何方向上排列
- 可以将显示顺序进行反转(reversed)
- 可以沿一个主轴线线性排列,或者沿着交叉轴线多条直线排列
- 可以响应收缩块内容的空间大小
- 可以在交叉轴上与容器彼此对齐
Flex布局框模型
一个flex布局主要为 display: flex;
或 display: inline-flex;
失效的属性
column-*
float, clear
vertical-align
::first-line, ::first-letter, 伪元素
Flex Items
简单的来说, flex items 就是 flex 容器里面的框(块)
- 绝对定位 (
position:absolute;
) 不参与 flex 布局 - 相邻的item块的 margin 不会被合并
泛 flex属性
flex-flow
同时定义flex容器的主轴和交叉轴的属性
value: flex-direction || flex-wrap
官网介绍
demo
flex-direction
设置主轴(main axis)方向
value: row | row-reverse | column | column-reverse
initial: row
flex-wrap
设置单行还是多行,以及定义交叉轴的方向
value: nowrap | wrap | wrap-reverse
initial: nowrap
flex
由多个属性组合而成
value: none | <'flex-grow'> <'flex-shrink'> ? || <'flex-basis'>
flex-grow
item块扩展空间的比利占有, 当空间有剩余时进行扩展.
value: number
initial: 0
公式介绍
example
flex-shrink
item块收缩空间的比利占有,当空间不足时进行收缩. (flex-wrap: nowrap; 有效)
value: number
initial: 1
公式介绍
demo
flex-basis
设置flex块的基本宽度. (flex-wrap: nowrap 有效)
value: auto | <width>
initial: 1
order
块顺序, 手动设置块的显示顺序,默认是以块出现顺序进行排序
value: <integer>
initial: 0
justify-content
在主轴线上,对于有空闲的空间的容器来说, 允许内容沿着当前行的主轴线对齐
value: flex-start | flex-end | center | space-between | space-around
initial: flex-start
justify-content
属性描述
- flex-start:弹性盒子元素将向行起始位置对齐。该行的第一个子元素的主起始位置的边界将与该行的主起始位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。
- flex-end:弹性盒子元素将向行结束位置对齐。该行的第一个子元素的主结束位置的边界将与该行的主结束位置的边界对齐,同时所有后续的伸缩盒项目与其前一个项目对齐。
- center:弹性盒子元素将向行中间位置对齐。该行的子元素将相互对齐并在行中居中对齐,同时第一个元素与行的主起始位置的边距等同与最后一个元素与行的主结束位置的边距(如果剩余空间是负数,则保持两端相等长度的溢出)。
- space-between:弹性盒子元素会平均地分布在行里。如果最左边的剩余空间是负数,或该行只有一个子元素,则该值等效于'flex-start'。在其它情况下,第一个元素的边界与行的主起始位置的边界对齐,同时最后一个元素的边界与行的主结束位置的边距对齐,而剩余的伸缩盒项目则平均分布,并确保两两之间的空白空间相等。
- space-around:弹性盒子元素会平均地分布在行里,两端保留子元素与子元素之间间距大小的一半。如果最左边的剩余空间是负数,或该行只有一个伸缩盒项目,则该值等效于'center'。在其它情况下,伸缩盒项目则平均分布,并确保两两之间的空白空间相等,同时第一个元素前的空间以及最后一个元素后的空间为其他空白空间的一半
align-items
item块在交叉轴对齐
value: flex-start | flex-end | center | baseline | stretch
initial: stretch
align-self
重写单个item块的对齐方式
value: auto | flex-start | flex-end | center | baseline | stretch
demo
align-content
当交叉轴有剩余空间时,会设置自由盒内部各个项目在垂直方向排列方式. (flex-wrap: wrap; 有效)
value: flex-start | flex-end | center | space-between | space-around | stretch
initial: stretch
demo
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。