http://www.runoob.com/w3cnote/flex-grammar.html
什么FlexBox布局?
弹性盒子模型(The Flexible Box Module),又叫Flexbox,意为“弹性布局”,旨在
通过弹性的方式来对齐和分布容器中内容的空间,使其能适应不同屏幕,为盒装模
型提供最大的灵活性。
FlexBox布局更多的用到移动端,PC端除了盒子模型布局,也支FlexBox布
局 , FlexBox布局将会是成为未来开发的主流技术,将在移动端体现的最明显。FlexBox布局能够解决的问题
浮动布局
各种机型屏幕的适配
水平和垂直居中
自动分配宽度-
Flex布局的思想
主轴
侧轴(交叉轴)
容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。
主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
项目默认沿主轴排列,单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。 结论:主轴的方向 与 父容器中 item 的排列方向 一致
PC指定盒子为FlexBox布局
display:flex;-
FlexBox的常用属性
6-1. 容器属性
一、flex-direction
flex-direction : row | row-reverse | column | column-reverse
该属性:规定了主轴的方向(父容器中item的排列方向)。
row:主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column(默认值):主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
column-reverse:主轴为垂直方向,起点在下沿。
二、justify-content
justify-content: flex-start | flex-end | center | space-between | space-around
规定:子item在主轴方向的对齐方式
flex-start(默认值):伸缩项目向一行的起始位置靠齐。
flex-end:伸缩项目向一行的结束位置靠齐。
center:伸缩项目向一行的中间位置靠齐。
space-between:两端对齐,项目之间的间隔都相等。
space-around:伸缩项目会平均地分布在行里,两端保留一半的空间。
下图灰色为背景,主轴方向为水平,侧轴方向为垂直:
三、align-item
align-items : flex-start | flex-end | center | baseline | stretch
规定:子item在侧轴方向的对齐方式
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐 。
center:交叉轴的中点对齐。
baseline:项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
下图灰色为背景,主轴方向是水平,侧轴方向是垂直
四、flex-wrap
flex-wrap : nowrap | wrap | wrap-reverse
默认情况下,项目都排在一条线(又称"轴线")上。
flex-wrap属性定义,如果一条轴线排不下,如何换行。
nowrap(默认值):不换行
wrap:换行,第一行在上方
wrap-reverse:换行,第一行在下方。(和wrap相反)
6-2. 元素属性
一、flex
flex是 “flex-grow”、“flex-shrink”和“flex-basis”三个属性的缩写 ,
参数一:定义项目的放大比例;
参数二:定义了项目的缩小比例;
参数三:定义了在分配多余空间之前,项目占据的主轴空间。
其中第二个和第三个参数(flex-shrink、flex-basis)是可选参数。
flex默认值为“0 1 auto ”。
案例:
权重分别:1,1,1
flex:1
权重分别:1,3,1
flex:1 flex:3 flex:1
二、align-self
align-self : align-self: auto | flex-start | flex-end | center | baseline | stretch;
align-self属性允许单个item有与其他item不一样的对齐方式