flex布局(弹性布局)

一、两个重要的概念:

1. flex container:开启了flex布局的元素

2. flex items:flex container里面的直接子元素

示例图

例如上图,红色框就是 flex container, 黑色框就是 flex items

二、display的 flex 属性和 inline-flex 属性

1. flex属性指的是将元素设置成块级元素,独占一行

2. inline-flex属性是元素设置成 行内块级元素  不会独占一行

三、flex模型常用的几个名词:

模型图

1. main axis:主轴     主轴的开始位置为main start  结束位置为main end

2.cross axis:交叉轴  交叉轴的开始位置为cross start  结束位置cross end

(注意:主轴和交叉轴位置不是固定的,根据实际情况而来)

3.mian size:主轴的大小

4.cross size:交叉轴的大小

四、 flex布局的常用属性:

1)在flex container上常用的CSS属性:

flex-direction:决定主轴的方向,默认值是row,从左到右排列;

                        如果值变为row-reverse,则排列变成从右到左;

                        如果值变为column,则排列变成从上到下;

                        如果值变为column-reverse,则排列变成从下到上;

flex-direction:row


flex-direction:row-reverse


flex-direction:column

flex-wrap(包裹):默认值:nowrap(不换行)

flex-wrap: nowrap

换行显示:wrap 换行之后会对换行的元素进行上分平等占位

flex-wrap: wrap

换行显示并翻转: wrap-reverse很少用

flex-wrap: wrap-reverse

justify-content:决定flex items在主轴上的对其方式,

                          默认情况下是同主轴的开始位置对其,默认值为flex-start

justify-content: flex-start

                            同结束位置对其:

justify-content: flex-end

                            居中对其:

justify-content: center

                            分散对其,flex items之间的距离相等:

justify-content: space-between

                            等分间距,flex items之间的距离相等,边距也相等:

justify-content: space-evenly

                            元素到元素之间的距离是元素到边框距离的2倍:

justify-content: space-around

align-items:决定flex items在交叉轴上面的对齐方式

 normal:在弹性布局中,效果和stretch一样

 stretch:当flex items 在交叉轴方向的size为auto时,会自动 拉伸至填充·flex container(前提是没有给flex items设置高度)

·flex-start:与交叉轴的开始位置对齐

align-items:flex-start

flex-end:与交叉轴的结束位置对齐

align-items:flex-end

center:与交叉轴居中对齐

baseline:与基准线对齐(如果是多行文本,则根据第一行文本的底部作为基线)

align-items: baseline    

                        

align-content:决定多行的flex items在交叉轴上的对其方式

align-content:flex-start:以交叉轴开始对齐

align-content:flex-end:以交叉轴结束对齐

align-content:space-between:元素分开上下分部

align-content:space-around元素与元素之间空隙是元素到边距的2倍

align-content:space-evenly元素到元素到边距的距离相等

2)在 flex items上常用的CSS属性:

flex:一般不容易记住,建议看文档

当flex取值为1时,代表flex item平均占用 flex container

flex的取值

flex-grow:决定了flex items如何扩展

1.可以设置任意非负数字(正小数、正整数、0),默认值是0

当flex container在main axis方向上有剩余尺寸时,flex-grow属性才会生效

2. 如果所有flex items的flex-grow总和超过1,那么每个flex item扩展的尺寸为

    剩余尺寸 * flex-grow/总和

3.如果所有flex items的flex-grow总和不超过1,那么每个flex item扩展的尺寸为

    剩余尺寸 * flex-grow

总体意思就是用flex-grow的值乘以剩余尺寸,再加到对应的元素上

4.flex items扩展后的最终尺寸不能超过max-width/max-height

flex-basis:可以设置主轴元素的大小

他的权重大于元素自身的宽度(一般直接设置宽度)

flex-shrink(收缩)收缩的最小宽度为里面内容的宽度

默认值为1

(同flex-grow意思相同,flex-shrink的取值越高,收缩尺寸越大)

flex items收缩后的最终尺寸不能小于min-width/min-height

order:决定了flex items的排布顺序,默认值auto(很少使用)

1.可以设置任意整数(正整数、负整数、0),值越小就越排在前面

2.默认值是0

slign-self:给某个特定的元素添加对其方式

1. 遵从flex containerDe align-items设置

2. stretch、flex-start、flex-end、center、baseline,效果跟align-items一致

你可能感兴趣的:(flex布局(弹性布局))