说说flex布局中子级容器上有哪些属性

173 阅读3分钟

「这是我参与11月更文挑战的第16天,活动详情查看:2021最后一次更文挑战

在CSS2升级到CSS3时新增了Flex布局方式,这种方式也叫弹性布局、伸缩布局。其中相关属性有作用在父级容器上的,也有作用在子级项目上的,需要灵活运用

其中父级容器上的属性有,分别是flex-direction、flex-wrap、flex-flow、justify-content、align-items、align-content

子级容器上也有6个,分别是flex-growflex-shrinkflex-basisflexalign-selforder

本文主要讲子级容器上的6个

子级容器上的属性,主要控制flex布局中子项的自适应伸缩及分配

自适应伸缩 = 按比例分配容器的剩余空间

  • flex-grow 定义子项(item)的扩展比例

默认值为0,即无扩展

仅当存在可用的分配空间时有效

对于多行的子项,剩余空间以“行”为单位

值为纯数字,没有负值,没有单位

  • flex-shrink 定义子项(item)的收缩比例

值表示的是空间分配比例,纯数字,无单位;

默认值为1,即等比缩小

当容器空间不足时有效(nowrap状态下)

  • flex-basis 定义子项(item)在主轴上的基准尺寸(初始大小)

值为长度值或者百分比

默认值:auto,即项目原定大小;如果设定值,则优先于项目原定大小

配合 flex-grow 和 flex-shrink 配合使用才能发挥效果

  • flex 复合属性:flex-grow, flex-shrink 和 flex-basis的简写

语法

flex:none | [ flex-grow ] || [ flex-shrink ] || [ flex-basis ] 多个值以空格隔开,按既定顺序排列(grow、shrink、basis),可省略

值的写法有多种形式

flex的常见取值: 默认值:【flex:0 1 auto】 (三个属性值的组合),简写为【flex:0 auto】

快捷值:auto = 【flex:1 1 auto】(子项可扩展可收缩)

快捷值:none = 【flex:0 0 auto】(子项固定)

比例值:只定义比例,按顺序为grow、shrink值 , basis值变auto为0%

尺寸值:只定义尺寸,值为basis的值, grow值变0为1

速记注意:

只定义比例,basis值会改变(子项原定尺寸会被覆盖)

只定义尺寸,则子项可扩展可收缩(更改默认不扩展特性)

子项核心属性的特点总结:

扩展(grow)/收缩( shrink)是按比例操作子项的适配方式,值为纯数字类型无单位无负值 一个flex布局中, flex-shrink 和 flex-grow 只会有一个能起作用

优先使用flex复合属性,而不是单独写三个分离的属性,因为浏览器会推算相关值。

基准尺寸( basis )在flex模块中,替代了主轴方向上的width或height值

要保证子项的尺寸固定,通常需要在设定basis的基础上,定义grow和shrink为0。常见写法有: width/height 配合 【flex:none】 【flex:0 0 尺寸】

  • align-self 和align-item一样,定义子项在侧轴上的对齐方式

优先级高于align-item,用于为特殊的子项定义不一样的对齐方式

值:

flex-start 起点对齐

flex-end 终点对齐

center 中间对齐

baseline 基线对齐(子项的第一行文本)(无文本则底部对齐)

stretch 默认值,拉伸对齐(子项未设置尺寸的情况下占满容器侧轴向空间)

auto:自动

  • order 定义子项在容器中的排列顺序

值为整数,数值小的排在前面。可以为负值,默认值为 0。