声明弹性盒模型的几种方式:1.display:flex;块级弹性盒子2.display:inline-flex行级弹性盒子
弹性盒子里的元素是弹性元素,默认水平方向排列flex-direction:row;

改变排列方向:flex-direction:column
,控制元素溢出盒子宽度时,自动换行.my{
display: flex;
width:100px;
height: 80px;
border: 1px solid red;
flex-direction: row;
flex-wrap:wrap;
}
.my *{
padding: 10px;
width: 30px;
height: 20px;
box-sizing: border-box;
border: 1px solid red;
}

主轴与交叉轴
若flex-direction:row;主轴则是水平的,从左到右,交叉轴则是与水平轴垂直的那条轴;若flex-direction:column;,主轴则是垂直的,从上到下,交叉轴则是与垂直的轴垂直,是水平的;
主轴中元素的排列:justify-content:center;居中排列flex-start;flex-end;主轴结束,从右到左
justify-content: space-evenly;完全平均分配,这里指

justify-content: space-around;

justify-content: space-between;

align-items: flex-end;交叉轴结束

align-items: center;交叉轴居中

align-items: stretch;拉伸适应交叉轴高度
交叉轴和主轴结合使用
align-items: center;
justify-content: center;

单个元素设置排列方式
.my div:nth-child(1){
align-self:center;
}

元素可用空间分配(当空间多的时候):将剩余空间平均分配到每个元素身上:flex:1;

.my div:nth-child(1){
flex-grow:2;
}
.my div:nth-child(2){
flex-grow: 1;
}
.my div:nth-child(3){
flex-grow: 0;
}

元素动态缩小(当空间不够用的时候):父元素400px,子元素3个每个300px,这时父元素不够分配,此时自动等比例缩小

若想这些元素,不等比例缩小,使用flex-shrink: 0;(缩小比例)

.my div:nth-child(2){
flex-shrink: 3;(缩小三倍)
}

flex-basis是元素在主轴上占的空间,flex-basis: 10px;相当于width:10px
flex是flex-grow、flex-shrink 、flex-basis缩写组合。
平均分配剩余空间,并不进行尺寸缩小,基础尺寸为200px。
flex:0 0 100px;(不分配剩余空间,不进行尺寸的等比例缩小,基础尺寸100px)

flex:0 1 100px;(进行缩放)

控制弹性元素的排序
order:数字越大越靠后,越小越靠前
.my div:nth-child(1){
order:2;
}
.my div:nth-child(4){
order:-11;
}

margin-right:auto的妙用
以导航栏为例,当导航栏设置了width;logo和ul分布在左边,按钮分布在右边,这是之间的空隙自动留出,使用margin-right:auto即可,就能实现logo和ul在左边分布,按钮在靠右边的位置分布。