父元素:flex container
子元素:flex items.
当其有父元素且子元素的排布具有一定顺序时,我们可以将排布属性统一写在父元素中,若无父元素或者子元素排布无顺序时,可将排布属性分开写在子元素中,下面都会介绍。
普通盒模型无宽时,子元素会自动将宽变为100%,从上到下依次排列。
弹性盒模型无高时,子元素会自动将高变为100%,从左到右依次排列。
现在先介绍一下父元素容器的两条主要的轴:
弹性盒模型
"container">
"sl01">1
"sl02">2
"sl03">3
"sl04">4
由图示可以知道,父元素设为弹性盒模型,其效果只出现于其子元素。
当子元素的宽度填不满父元素的时候,子元素整齐从左到右按宽度大小和编辑顺序排列,且不管高度为多少,都是顶部对齐,从上到下。
水平方向的排布方向是按照主轴方向排列。
弹性盒模型
"container">
"sl01">1
"sl02">2
"sl03">3
"sl04">4
是不感觉很神奇,子元素的总宽度都超过父元素了,为什么没有出来呢?我们来看下在浏览器端子元素的大小,我们用两个元素做例子。
他们的实际宽度都比我们自己设的要小,而且还是按照我们设的数字比例来缩小以适应父元素的宽度的。就因为这个,我们才叫他弹性盒模型。
当其有父元素,且在父元素中设的属性
来控制主轴的方向,即子元素排列方向。
其属性值有:
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
flex-direction: row;
}
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
flex-direction: row-reverse;
}
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
flex-direction: column;
}
可以观察到,当高度不够时,子元素也会自动缩小来适应父元素。
5. column-reverse 方向为从下到上
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
flex-direction: column-reverse;
}
当子元素的宽度足够大时,父元素容不下,就设flex-wrap:wrap;让他可以允许子元素换行。但此时换行是将父元素从高度上平等化分等分,元素在每一等分的最上方、最左方。
弹性盒模型
"container">
"sl01">1
"sl02">2
"sl03">3
"sl04">4
其属性值如下
弹性盒模型
"container">
"sl01">1
"sl02">2
"sl03">3
"sl04">4
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
/* flex-direction: column-reverse; */
/* flex-wrap: wrap; */
justify-content: flex-end;
}
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
/* flex-direction: column-reverse; */
/* flex-wrap: wrap; */
justify-content: center;
}
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
/* flex-direction: column-reverse; */
/* flex-wrap: wrap; */
justify-content: space-between;
}
.container{
width: 400px;
height: 400px;
background-color: rgb(228, 189, 116);
/* 告诉他,我这是弹性盒模型 */
display: flex;
margin: 100px auto 0;
/* flex-direction: column-reverse; */
/* flex-wrap: wrap; */
justify-content: space-around;
}
其属性值如下
在子元素中加上,学名为弹性增长因子,根据number,将未填满的空间通过增加宽度来填满。
在子元素中加上,学名为弹性缩放因子,根据number,将不够的空间用缩小子元素宽度的方法解决
在子元素中加上,来控制子元素的先后顺序
当其无父元素时,我们可以通过align-self来单独控制每个元素的布局