flex-shrink

基线 广泛可用

此功能已得到很好的建立,并且可以在许多设备和浏览器版本中使用。它已在浏览器中可用,自 2015 年 9 月.

flex-shrink CSS 属性设置弹性项目的收缩因子。如果所有弹性项目的大小都大于弹性容器,则弹性项目可以收缩以根据其 flex-shrink 值进行适应。每条弹性线的负空闲空间在具有大于 0flex-shrink 值的弹性线项目之间分配。

注意:建议使用 flex 简写,而不是单独的 flex-shrinkflex-growflex-basis 声明。我们在这里将它们分开,因为本文档涵盖了 flex 简写组件之一:flex-shrink 属性。

试一试

语法

css
/* <number> values */
flex-shrink: 2;
flex-shrink: 0.6;

/* Global values */
flex-shrink: inherit;
flex-shrink: initial;
flex-shrink: revert;
flex-shrink: revert-layer;
flex-shrink: unset;

描述

flex-shrink 属性指定弹性收缩因子,该因子决定当分配负空闲空间时,弹性项目相对于弹性容器中其他弹性项目的收缩程度。

此属性处理浏览器计算弹性项目 flex-basis 值并发现它们太大而无法放入弹性容器的情况。只要 flex-shrink 具有正值,项目就会收缩以避免溢出容器。

flex-grow 属性处理按比例分配可用的正空闲空间,比例与每个项目的 flex grow 因子成正比,并且仅考虑 flex-grow 属性的值。flex-shrink 属性管理删除负空闲空间以使盒子适合其容器而不溢出。删除空间比添加空间稍微复杂一些。弹性收缩因子乘以弹性基准大小;这会根据项目可以收缩的程度按比例分配负空间。这可以防止较小的项目在较大的项目明显减小之前收缩到 0px

通常,flex-shrinkflex-growflex-basis 属性一起使用。在 flex 简写中,收缩因子始终是第二个 <number>。如果简写仅包含一个数字值,则该值假定为 flex-grow 值。

flex-shrink 属性指定为单个 <number>

<number>

参见 <number>。负值无效。默认为 1。

正式定义

初始值1
应用于弹性项目,包括内联伪元素
继承
计算值按指定
动画类型一个 数字

正式语法

flex-shrink = 
<number [0,∞]>

示例

设置弹性项目收缩因子

此示例演示了如何根据项目的收缩因子分配负空闲空间。它包括五个弹性项目,其 flex-shrink 值大于 0,这些项目的组合宽度大于其父弹性容器的宽度。

HTML

html
<div id="content">
  <div class="box" style="background-color:red;">A</div>
  <div class="box" style="background-color:lightblue;">B</div>
  <div class="box" style="background-color:yellow;">C</div>
  <div class="box4" style="background-color:lightsalmon;">D</div>
  <div class="box5" style="background-color:lightgreen;">E</div>
</div>

CSS

我们为每个弹性项目提供一个 width200px。由于 flex-basis 属性默认为 auto,因此每个项目的 flex-basis 为 200px。这使得弹性项目的总宽度为 1000px,是容器大小的两倍。我们将所有弹性项目设置为可收缩,flex-shrink 值大于 0。最后两个项目的 flex-shrink 值设置得更大,因此它们将收缩得更多。

css
#content {
  display: flex;
  width: 500px;
}

#content div {
  width: 200px;
}

.box {
  flex-shrink: 1;
}

.box4 {
  flex-shrink: 1.5;
}

.box5 {
  flex-shrink: 2;
}

结果

弹性项目不会溢出其容器,因为它们能够收缩:500px 的负空闲空间根据其 flex-shrink 值在五个项目之间分配。前三个项目的 flex-shrink: 1 设置。D 的 flex-shrink: 1.5 和 E 的 flex-shrink: 2 设置。D 和 E 的最终宽度小于其他项目,其中 E 小于 D。

规范

规范
CSS 弹性盒布局模块级别 1
# flex-shrink-property

浏览器兼容性

BCD 表格仅在浏览器中加载

另请参阅