flex缩写语法|青训营笔记

158 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第2天

flex的缩写语法

引言

今天介绍一下flex缩写的一些用法,这在移动端是非常非常常见的操作,在很多时候,我们响应式布局能不能写好flex就是重中之重。因此今天就借着笔记来记录一下flex缩写语法的区别。

flex的常用属性

flex 有三种属性,flex-grow 可拉伸 flex-shrink 可压缩 flex-basis 当前元素的宽度

  • none: flex-grow: 0, flex-shrink: 0, flex-basis: auto
  • 1: flex-grow: 1, flex-shrink: 1, flex-basis: 0%
  • auto: flex-grow: 1, flex-shrink: 1, flex-basis: auto

none 应用场景

当flex子项的宽度就是内容的宽度,且内容永远不会换行,则适合使用flex:none。

<div class="container flex-none">
  <item>廖永源=懒羊羊</item>
  <item>廖永源=懒羊羊</item>
  <item>廖永源=懒羊羊</item>
  <item>廖永源=懒羊羊</item>
  <item>廖永源=懒羊羊</item>
</div>


.container {
    display: flex;
    border: 2px dashed crimson;
}

.container item {
    border: 2px solid deepskyblue;    
}
.flex-none item {
    flex: none;
}

image

1 和 auto 的区别和应用场景

结合flex属性值的描述,我们可以得出flex:1和flex:auto的行为表现:

元素尺寸可以弹性增大,也可以弹性变小,具有十足的弹性,但是flex:1在尺寸不足时会优先最小化内容尺寸,flex:auto在尺寸不足时会优先最大化内容尺寸。

<h4>flex:1</h4>
<div class="container flex-1">
    <item>廖永源===懒羊羊廖永源===懒羊羊廖永源===懒羊羊廖永源===懒羊羊</item>
    <item>lyy</item>
    <item>lyy</item>
    <item>lyy</item>
    <item>lyy</item>
</div>
<h4>flex:auto</h4>
<div class="container flex-auto">
    <item>廖永源===懒羊羊廖永源===懒羊羊廖永源===懒羊羊廖永源===懒羊羊</item>
    <item>lyy</item>
    <item>lyy</item>
    <item>lyy</item>
    <item>lyy</item>
</div>


.container {
    display: flex;
    border: 2px dashed crimson;
}

.container item {
    border: 2px solid deepskyblue;    
}

.flex-1 item {
    flex: 1;
}
.flex-auto item {
    flex: auto;
}

image

上图鲜明地体现了flex:1和flex:auto的区别,虽然都是充分分配容器的尺寸

但是flex:1的尺寸表现更为内敛(优先牺牲自己的尺寸),flex:auto的尺寸表现则更为霸道(优先扩展自己的尺寸)。

总结:

  • 当希望元素充分利用剩余空间,同时不会侵占其他元素应有的宽度的时候,适合使用flex:1
  • 当希望元素充分利用剩余空间,但是各自的尺寸按照各自内容进行分配的时候,适合使用flex:auto

参考链接: www.zhangxinxu.com/wordpress/2…