在css中,我们经常可以看到这样的写法:
.box {
display: flex;
}
.item {
flex: 1;
}
这里的flex:1相当于flex: 1 1 0%,它是一个简写属性,表示项目(flex item)在弹性容器(flex container)中如何伸缩。它相当于flex: 1 1 0%,包含了三个子属性:
使用flex:1的作用是让项目能够自动填充剩余空间,实现自适应布局。例如,我们有一个水平排列的三个项目,它们的内容长度不一样,我们想让它们平均占据一行的空间,就可以给它们都设置flex:1\
<div class="container">
<div class="item">Hello</div>
<div class="item">World</div>
<div class="item">Flex</div>
</div>
.container {
display: flex;
}
.item {
flex: 1;
}
这样,无论容器的宽度如何变化,项目都会自动调整宽度,保持平均分配。
flex属性还可以取其他值,例如:
我们可以通过修改上面的例子来观察不同值的效果:
<div class="container">
<div class="item none">Hello</div>
<div class="item auto">World</div>
<div class="item one">Flex</div>
</div>
.container {
display: flex;
}
.item {
border: 1px solid black;
}
.none {
flex: none;
}
.auto {
flex: auto;
}
.one {
flex: 1;
}
可以看到,none类的项目保持了原始大小,auto类的项目根据内容长度进行了伸缩,one类的项目平分了剩余空间。
这样,当容器的大小变化时,两者的表现也不同。
flex:1是一个常用的CSS属性,它可以让项目在弹性容器中自动填充剩余空间。
它是一个简写属性,包含了三个子属性:flex-grow, flex-shrink, flex-basis。
它相当于flex: 1 1 0%,flex:1和flex:auto都会占满剩余空间,我们可以根据合适的需求去选择这两种属性。