目录
基本内容:
一、弹性容器和弹性子元素:
二、主轴(main axis)和交叉轴(cross axis)
三、弹性容器的属性:
(一)项目排列方式
(二)弹性容器换行方式
(三)项目在主轴上的对齐方式
(四)项目在交叉轴上对齐方式:
四、项目的属性:
(一)项目的优先级
(二)项目的增大比例
(三)项目的缩减比例
(四)flex-basis
(五)单独对某个项目进行设置
基本内容:
1.弹性容器和弹性子元素
2.主轴(main axis)和交叉轴(cross axis)
3.弹性容器的基本属性
4.项目的基本属性
--------------------------------------------------我是一个分割线----------------------------------------------------------
一、弹性容器和弹性子元素:
弹性盒子:
-弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。-弹性容器通过设置 display 属性的值为 flex 或 inline-flex将其定义为弹性容器。
它的所有子元素自动成为容器成员,称为flex项目,简称项目-弹性容器内包含了一个或多个弹性子元素。
注意: 弹性容器外及弹性子元素内是正常渲染的。弹性盒子只定义了弹性子元素如何在弹性容器内布局。
弹性子元素通常在弹性盒子内一行显示。默认情况每个容器只有一行。
二、主轴(main axis)和交叉轴(cross axis)
-容器默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)。主轴的开始位置(与边框的交叉点)叫做main start,结束位置叫做main end;交叉轴的开始位置叫做cross start,结束位置叫做cross end。
-项目默认沿主轴排列。单个项目占据的主轴空间叫做main size,占据的交叉轴空间叫做cross size。
主轴和交叉轴的方向并不是固定的,而是由项目排列方式决定
1.当元素延行一行一行排时,主轴水平,交叉轴垂直
2.当元素延列一列一列排时,主轴垂直,交叉轴水平
三、弹性容器的属性:
(一)项目排列方式
flex-direction: row(默认值):主轴为水平方向,起点在左端。
row-reverse:主轴为水平方向,起点在右端。
column:主轴为垂直方向,起点在上沿。
column-reverse:主轴为垂直方向,起点在下沿。
1.值为row时
2.值为row-reverse时
3.值为column时
4.值为column-reverse时
(二)弹性容器换行方式
flex-wrap:默认情况下,项目都排在一条线(又称”轴线”)上。flex-wrap属性定义,如果一条轴线排不下,如何换行。
值:(1)nowrap 默认,不换行,当没法压缩时会溢出
(2)wrap 换行,第一行在上方,不会弹性压缩
(3)wrap-reverse 换行,第一行在下方
flex-flow: <flex-direction> <flex-wrap>; 一和二的简写
值为wrap时:会根据宽度自动换行,不会对元素进行压缩
(三)项目在主轴上的对齐方式
justify-content:justify-content属性定义了项目在主轴上的对齐方式
flex-start(默认值):左对齐
flex-end:右对齐
center: 居中
space-between:两端对齐,项目之间的间隔都相等。
space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。
space-evenly:每个项目间隔相等,且间隔等于于盒子壁的间隔
flex-start![]() | flex-end![]() |
center![]() | space-between![]() |
space-evenly![]() | space-around![]() |
(四)项目在交叉轴上对齐方式:
align-items:align-items属性定义项目在交叉轴上如何对齐。
flex-start:交叉轴的起点对齐。
flex-end:交叉轴的终点对齐。
center:交叉轴的中点对齐。
baseline: 项目的第一行文字的基线对齐。
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。
flex-start![]() | flex-end![]() |
space-between![]() | sapce-evenly![]() |
space-around![]() | stretch |
四、项目的属性:
(一)项目的优先级
order:order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
值:一个数
将2的order设置为-1时,其会优先进行排列
(二)项目的增大比例
lex-grow:flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
值:一个数
注意:如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则前者占据的剩余空间将比其他项多一倍。
(三)项目的缩减比例
flex-shrink:定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
值:一个数
注意:如果所有项目的flex-shrink属性都为1,当空间不足时,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
负值对该属性无效。
(四)flex-basis
flex-basis:定义了在分配多余空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。
它可以设为跟width或height属性一样的值(比如350px),则项目将占据固定空间。(即让其不再分配剩余空间)
(五)单独对某个项目进行设置
align-self:align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
该属性可能取6个值,除了auto,其他都与align-items属性完全一致。
这里建议多练习一下,先掌握基本的知识点,后面的俺也布吉岛,我也才学,反正就是多练练就会了