Flex 布局
//也称为弹性布局,是为了适应不同的屏幕尺寸和不同的设备类型二提出的一种布局方式。
基本概念
上图是一个横向的,文本流从左到右的弹性布局图示。这里有几个概念
- 弹性容器(Flex container), 指一个声明为 flex 或者 inline-flex 的元素,是所有 Flex items 的父元素。
- 弹性项目(Flex item), 指 flex 容器内的直接孩子元素;弹性容器中的直接文本项默认为匿名弹性项目。
- 主轴(main axis)和侧轴(cross axis), 类似于二维中的 X 轴和 Y 轴,主轴由属性 flex-direction 来定义,与主轴垂直的轴则是侧轴。
定义弹性布局
要使用弹性布局,需要定义一个弹性容器(Flex container),通过声明 display 属性为 flex 或者 inline-flex 来将此元素定义为弹性容器。
<figure class="highlight css" style="display: block; margin: 20px 0px; overflow: auto; padding: 15px; font-size: 13px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; font-family: lato, "pingfang sc", "microsoft yahei", sans-serif; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: justify; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;">
|
<pre style="overflow: auto; font-family: consolas, Menlo, "pingfang sc", "microsoft yahei", monospace; font-size: 13px; margin: 0px; padding: 1px 20px 1px 1px; color: rgb(102, 102, 102); background: rgb(247, 247, 247); line-height: 1.6; border: 0px; text-align: right;">1
2
3
</pre>
|
<pre style="overflow: auto; font-family: consolas, Menlo, "pingfang sc", "microsoft yahei", monospace; font-size: 13px; margin: 0px; padding: 1px; color: rgb(77, 77, 76); background: rgb(247, 247, 247); line-height: 1.6; border: 0px;">.flex {
display: flex
}
</pre>
|
</figure>
弹性容器的属性
-
flex-direction定义排列的方向-
row默认值,主轴为水平,从左向右排列 -
row-reverse主轴为水平,从右向左排列 -
column主轴为垂直方向,从上向下排列 -
column-reverse主轴为垂直方向,从下向上排列
-
-
flex-wrap定义是否新行显示,以及新行的排列方向-
nowrap默认值,显示在同一行,不换行 -
wrap一行显示不了时使用新行显示 -
wrap-reverse同wrap,但是从下向上显示
-
-
flex-flow是flex-direction和flex-wrap的简写方式- 使用方法
flex-flow: <‘flex-direction’> || <‘flex-wrap’> - 默认值为:
row nowrap
- 使用方法
-
justify-content定义弹性项目在主轴上的对齐方式-
flex-start默认值,从起始位置对齐,通常为左对齐 -
flex-end从结束位置对齐,通常为右对齐 -
center居中对齐 -
space-between两端对齐,平均间隔 -
space-around每个子元素都有相等的外边距,相邻元素外边距不会叠加
-
-
align-items定义弹性项目在侧轴上的对齐方式-
stretch默认值,弹性项目在没指定高度或者高度为auto的情况下,则高度会占满空间 -
flex-start侧轴起点开始对齐 -
flex-end从侧轴结束位置对齐 -
center相对侧轴居中对齐 -
baseline与基线对齐
-
-
align-content定义多行在侧轴的对齐方式,当只有一行时,不起作用-
stretch默认值,各行会伸展以占满整个纵轴空间 -
flex-start对齐到纵轴起点 -
flex-end对齐到纵轴终点 -
center相对纵轴中间对齐 -
space-between各行相对纵轴两端对齐,各行间隔相等 -
space-around各行都有相等的外边距,各行的外边距不会叠加
-
弹性项目的属性
-
flex-grow数字,定义弹性项目的放大比例,默认 0 -
flex-shrink数字,定义弹性项目的缩小比例,默认 1,值 0 表示不缩小 -
flex-basis数字,定义弹性项目的默认尺寸, -
flex是flex-growflex-shrinkflex-basis的缩写,默认值为0 1 auto -
align-self定义此弹性项目本身的对齐方式,会覆盖弹性容器align-items定义的对齐方式-
auto从弹性容器继承 -
stretch弹性项目在没指定高度或者高度为auto的情况下,则高度会占满空间 -
flex-start侧轴起点开始对齐 -
flex-end从侧轴结束位置对齐 -
center相对侧轴居中对齐 -
baseline与基线对齐
-
-
order数字,定义弹性项目的显示顺序,数字越小越靠前
CSS3动画
https://segmentfault.com/a/1190000006699023
阮一峰flex布局
http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html
通关小游戏你就等于学会flex啦~
http://flexboxfroggy.com/#zh-cn
http://www.flexboxdefense.com/
