讲师中心 微信公众号

工具推荐

视频效率加速
AniShort
AniShort

AI短剧协同制作平台

updream

一键生成高质量推广成片

剧云
剧云

中文短剧剧本制作平台

Laper
Laper

剧本策划到成片协作

css flexbox布局中的flex-grow与flex-shrink_控制项目的伸缩

阿芳吖_3986

阿芳吖_3986

发布时间:2026-01-08 07:05:13

|

248人浏览过

|

来源于php中文网

原创

flex-grow按权重分配剩余空间,flex-shrink按flex-basis与系数乘积比例压缩溢出空间;二者均依赖flex-basis,且与内容尺寸、内外边距耦合紧密。

css flexbox布局中的flex-grow与flex-shrink_控制项目的伸缩

flex-grow 是怎么分配剩余空间的

flex-grow 控制的是容器中**有剩余空间时**,项目按比例“多占多少”。它不是固定像素值,而是权重系数。比如两个子项分别设 flex-grow: 1 和 flex-grow: 2,剩余空间会被切成三份,前者拿 1 份,后者拿 2 份。

注意:它只在主轴方向起作用,且前提是容器主轴有“空余”,也就是所有子项原始尺寸之和小于容器宽度(或高度)。

  • flex-grow 默认值是 0,即不伸展
  • 设为 0 时,即使有剩余空间也不参与分配
  • 设为非零值但其他项目 flex-basis 很大,也可能导致实际伸展量极小(因为先减去 flex-basis 才算剩余)
  • 负值非法,会被忽略

flex-shrink 怎么压缩超出内容

flex-shrink 控制的是当子项**总尺寸超过容器**时,各项目按比例“缩多少”。它的计算逻辑比 flex-grow 更隐蔽:缩放量 = (自身 flex-basis × flex-shrink) / 所有项目该乘积之和 × 超出总量。

也就是说,flex-shrink 不是线性缩放比例,还受 flex-basis 影响。一个 flex-basis: 200px; flex-shrink: 2 的项目,比 flex-basis: 100px; flex-shrink: 2 的项目缩得更多。

立即学习“前端免费学习笔记(深入)”;

CDP浏览器大师
CDP浏览器大师

CDP浏览器大师:通过Chrome DevTools Protocol驱动已登录浏览器实现自动化任务,解决反爬封号、选择器失效、SPA路由难导航、固定sleep不准四大痛点。核心能力包括UA伪装、WebGL/Canvas指纹混淆、智能等待、动态选择器以及可视化调试。

下载
  • flex-shrink 默认值是 1,即默认可压缩
  • 设为 0 可阻止该项目被压缩(常用于固定宽度导航栏项)
  • 设为 0 但其他项目 flex-shrink 很大,可能导致溢出容器且不折行
  • 负值同样非法

flex-grow 和 flex-shrink 同时生效的典型陷阱

很多人以为 flex: 1 就是“自动填满并可压缩”,其实它等价于 flex: 1 1 0 —— flex-basis: 0。这意味着所有项目从 0 宽度开始,再按 flex-grow 分配空间。这在文字内容少时没问题,但若某项目含长单词或固定宽元素(如图片),可能因 flex-basis: 0 导致换行异常或内容挤压。

更稳妥的写法是显式指定 flex-basis:

flex: 1 1 auto;   /* 内容宽度为基准,再伸缩 */
flex: 1 0 auto;   /* 可伸展,但禁止压缩(适合文本容器)*/
flex: 0 0 200px;  /* 完全不伸缩,固定 200px */
  • 别依赖 flex: 1 处理含内联块、图片或长英文单词的布局
  • flex-shrink: 0 配合 white-space: nowrap 容易造成横向滚动,需加 overflow: hidden 或约束父容器
  • 使用 min-width: 0 或 min-height: 0 可防止 flex 项目因内容过长而撑开(尤其在嵌套 flex 中)

浏览器兼容性与 flex-basis 的隐式行为

IE10–11 对 flex-basis 的解析存在 bug:当设为 auto 时,可能无视内容尺寸,退回到 0;设为具体值(如 200px)才可靠。这也是为什么老项目常用 flex: 0 0 200px 而非 flex: 0 0 auto。

Chrome/Firefox/Safari 现代版本对 flex-basis: auto 支持良好,但只要项目里有 width 或 height,flex-basis 就会优先取该值(除非显式覆盖)。

  • 不要混用 width 和 flex-basis 且不统一单位(比如 width: 100% + flex-basis: 200px)
  • 调试时用浏览器 devtools 查看 computed 样式里的 flex-basis 实际值,比看声明更准
  • flex-shrink 在 Safari 旧版中偶有计算偏差,建议用整数(避免小数如 0.5)

flex-grow 和 flex-shrink 看似简单,真正难的是它们和 flex-basis、内容尺寸、内外边距之间的耦合关系——多数布局问题根源不在伸缩系数本身,而在初始尺寸没控住。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

花生AI
花生AI Hot

一款AI视频创作工具,主要用于B站推出的AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

2966

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

6179

2023.11.06

Chrome开启无痕模式
Chrome开启无痕模式

本专题整合了Chrome无痕模式开启相关内容,阅读专题下面的文章了解更多详细教程。

4407

2026.03.24

overflow什么意思
overflow什么意思

overflow是一个用于控制元素溢出内容的属性,当元素的内容超出其指定的尺寸时,overflow属性可以决定如何处理这些溢出的内容。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3200

2024.08.15

flex教程
flex教程

php中文网为大家带来了flex教程合集,Flex是采用Flex布局的元素,称为Flex容器(flex container),简称"容器",它的所有子元素自动成为容器成员,有三个核心概念: flex项,需要布局的元素;flex容器,其包含flex项;排列方向,这决定了flex项的布局方向。php中文网还为大家带来flex的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

11697

2023.06.14

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

0

2026.11.12

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

0

2026.11.12

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

0

2026.11.12

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

120

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn